commit 2025-10-11 19:29 add ZtCBaseList::SwapLink() : ZCppMain/ZMainHead.H
This commit is contained in:
@ -7148,7 +7148,7 @@ namespace ZNsMain
|
||||
{
|
||||
// 다음 링크와 위치를 맞바꾼다.
|
||||
|
||||
if(IsEmpty()){return *this;}
|
||||
if(size()<=1){return *this;}
|
||||
|
||||
|
||||
ZCLink* VP_LinkNext = AR_LinkPrev.mp_NextLink;
|
||||
@ -7235,19 +7235,98 @@ namespace ZNsMain
|
||||
ZtCBaseList& SwapLinkPrev(ZCLink& AR_LinkNext)*/
|
||||
|
||||
|
||||
void SendOutHead(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
ZtCBaseList& SwapLink(ZCLink& AR_LinkOne, ZCLink& AR_LinkTwo)
|
||||
{
|
||||
// AP_CutLink 를 잘라서 rhs 의 앞에 연결한다.
|
||||
// AR_LinkOne 와 AR_LinkTwo 의 위치를 바꾼다.
|
||||
|
||||
SendOutAfter (AR_CutLink, rhs, ZCLinkOpt(0));
|
||||
}
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
{
|
||||
// AP_CutLink 를 잘라서 rhs 의 뒤에 연결한다.
|
||||
if(size()<=1){return *this;}
|
||||
|
||||
SendOutBefore(AR_CutLink, rhs, ZCLinkOpt(0));
|
||||
if(&AR_LinkOne==&AR_LinkTwo){return *this;}
|
||||
|
||||
if(&AR_LinkOne==mp_HeadLink && &AR_LinkTwo==mp_TailLink)
|
||||
{ return SwapLinkNext(AR_LinkTwo); }
|
||||
if(&AR_LinkOne==mp_TailLink && &AR_LinkTwo==mp_HeadLink)
|
||||
{ return SwapLinkNext(AR_LinkOne); }
|
||||
/******************************************************/
|
||||
if(&AR_LinkTwo==AR_LinkOne.mp_NextLink)
|
||||
{ return SwapLinkNext(AR_LinkOne); }
|
||||
if(&AR_LinkOne==AR_LinkTwo.mp_NextLink)
|
||||
{ return SwapLinkNext(AR_LinkTwo); }
|
||||
/******************************************************/
|
||||
|
||||
if(&AR_LinkOne==mp_HeadLink)
|
||||
{
|
||||
ZCLink* VP_HeadNext=mp_HeadLink->mp_NextLink;
|
||||
ZCLink* VP_TwoNext =AR_LinkTwo. mp_NextLink;
|
||||
ZCLink* VP_TwoPrev =AR_LinkTwo. mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink(&AR_LinkTwo, VP_HeadNext) ;
|
||||
ZCLink::JoinLink( VP_TwoPrev, &AR_LinkOne ) ;
|
||||
ZCLink::JoinLink(&AR_LinkOne, VP_TwoNext ) ;
|
||||
ZCLink::MakeRing(&AR_LinkTwo, mp_TailLink) ;
|
||||
|
||||
mp_HeadLink = &AR_LinkTwo ; return *this;
|
||||
}
|
||||
if(&AR_LinkOne==mp_TailLink)
|
||||
{
|
||||
ZCLink* VP_TailPrev= mp_TailLink->mp_PrevLink;
|
||||
ZCLink* VP_TwoNext = AR_LinkTwo. mp_NextLink;
|
||||
ZCLink* VP_TwoPrev = AR_LinkTwo. mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink( VP_TwoPrev , &AR_LinkOne ) ;
|
||||
ZCLink::JoinLink(&AR_LinkOne , VP_TwoNext ) ;
|
||||
ZCLink::JoinLink( VP_TailPrev, &AR_LinkTwo ) ;
|
||||
ZCLink::MakeRing( mp_HeadLink, &AR_LinkTwo ) ;
|
||||
|
||||
mp_TailLink = &AR_LinkTwo ; return *this;
|
||||
}
|
||||
/******************************************************/
|
||||
if(&AR_LinkTwo==mp_HeadLink)
|
||||
{
|
||||
ZCLink* VP_HeadNext=mp_HeadLink->mp_NextLink;
|
||||
ZCLink* VP_OneNext =AR_LinkOne. mp_NextLink;
|
||||
ZCLink* VP_OnePrev =AR_LinkOne. mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink(&AR_LinkTwo, VP_HeadNext) ;
|
||||
ZCLink::JoinLink(VP_OnePrev , &AR_LinkOne ) ;
|
||||
ZCLink::JoinLink(&AR_LinkOne, VP_OneNext ) ;
|
||||
ZCLink::MakeRing(&AR_LinkTwo, mp_TailLink) ;
|
||||
|
||||
mp_HeadLink = &AR_LinkTwo ; return *this;
|
||||
}
|
||||
if(&AR_LinkTwo==mp_TailLink)
|
||||
{
|
||||
ZCLink* VP_TailPrev=mp_TailLink->mp_PrevLink;
|
||||
ZCLink* VP_OneNext =AR_LinkOne. mp_NextLink;
|
||||
ZCLink* VP_OnePrev =AR_LinkOne. mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink(VP_OnePrev , &AR_LinkTwo ) ;
|
||||
ZCLink::JoinLink(&AR_LinkTwo, VP_OneNext ) ;
|
||||
ZCLink::JoinLink(VP_TailPrev, &AR_LinkTwo ) ;
|
||||
ZCLink::MakeRing(mp_HeadLink, &AR_LinkTwo ) ;
|
||||
|
||||
mp_TailLink = &AR_LinkTwo ; return *this;
|
||||
}
|
||||
/********************************************************/
|
||||
|
||||
ZCLink* VP_OnePrev= AR_LinkOne.mp_PrevLink ;
|
||||
ZCLink* VP_OneNext= AR_LinkOne.mp_NextLink ;
|
||||
ZCLink* VP_TwoPrev= AR_LinkTwo.mp_PrevLink ;
|
||||
ZCLink* VP_TwoNext= AR_LinkTwo.mp_NextLink ;
|
||||
|
||||
ZCLink::JoinLink( VP_OnePrev, &AR_LinkTwo) ;
|
||||
ZCLink::JoinLink(&AR_LinkTwo, VP_OneNext) ;
|
||||
ZCLink::JoinLink( VP_TwoPrev, &AR_LinkOne) ;
|
||||
ZCLink::JoinLink(&AR_LinkOne, VP_TwoNext) ; return *this;
|
||||
}/*
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)*/
|
||||
ZtCBaseList& SwapLink(ZCLink& AR_LinkOne, ZCLink& AR_LinkTwo)*/
|
||||
|
||||
|
||||
|
||||
void SendOutHead(ZCLink& AR_CutLink, TypeThis& rhs) // AP_CutLink 를 잘라서 rhs 의 앞에 연결한다.
|
||||
{ SendOutAfter (AR_CutLink, rhs, ZCLinkOpt(0)); }
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs) // AP_CutLink 를 잘라서 rhs 의 뒤에 연결한다.
|
||||
{ SendOutBefore(AR_CutLink, rhs, ZCLinkOpt(0)); }
|
||||
|
||||
|
||||
ZtCBaseList& SendRangeOut ///////////////////////////////////////////////
|
||||
|
@ -577,6 +577,29 @@ namespace ZNsMain
|
||||
cout<<"*****************************************************"<<endl;
|
||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(1th, 4th)"<<endl;
|
||||
VO_ZCBaseListEx10_2.SwapLink
|
||||
( VO_ZCBaseListEx10_2.HeadRef(), VO_ZCBaseListEx10_2.HeadRef(3) );
|
||||
cout<<"*****************************************************"<<endl;
|
||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(2th, 1th)"<<endl;
|
||||
VO_ZCBaseListEx10_2.SwapLink
|
||||
( VO_ZCBaseListEx10_2.HeadRef(1), VO_ZCBaseListEx10_2.HeadRef() );
|
||||
cout<<"*****************************************************"<<endl;
|
||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(2th, 5th)"<<endl;
|
||||
VO_ZCBaseListEx10_2.SwapLink
|
||||
( VO_ZCBaseListEx10_2.HeadRef(1), VO_ZCBaseListEx10_2.HeadRef(4) );
|
||||
cout<<"*****************************************************"<<endl;
|
||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(4th, 5th)"<<endl;
|
||||
VO_ZCBaseListEx10_2.SwapLink
|
||||
( VO_ZCBaseListEx10_2.HeadRef(3), VO_ZCBaseListEx10_2.HeadRef(4) );
|
||||
cout<<"*****************************************************"<<endl;
|
||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user