commit 2025-10-12 08:03 is coding ZtCBaseList::CutLinkRangeIn() in ZCppMain/ZMainHead.H
This commit is contained in:
@ -6607,10 +6607,15 @@ namespace ZNsMain
|
|||||||
|
|
||||||
AP_RhsStd==0 이면 맨 앞에 삽입한다. -- 2025-10-06 09:16
|
AP_RhsStd==0 이면 맨 앞에 삽입한다. -- 2025-10-06 09:16
|
||||||
|
|
||||||
■ bool AB_After=true 추가. AB_After==false 이면, rhs 의
|
■ bool AB_After=true 추가.
|
||||||
AP_RhsStd 의 앞에 삽입한다.
|
|
||||||
|
|
||||||
AP_RhsStd==0 이면 맨 뒤에 삽입한다. -- 2025-10-07 08:36
|
AB_After==true 이면, rhs 의 AP_RhsStd 의 뒤에 삽입한다.
|
||||||
|
AB_After==false 이면, rhs 의 AP_RhsStd 의 앞에 삽입한다.
|
||||||
|
|
||||||
|
AB_After==true && AP_RhsStd==0 이면 맨 앞에 삽입한다.
|
||||||
|
AB_After==false && AP_RhsStd==0 이면 맨 뒤에 삽입한다.
|
||||||
|
|
||||||
|
-- 2025-10-07 08:36
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////*/
|
///////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
@ -6705,7 +6710,365 @@ namespace ZNsMain
|
|||||||
)
|
)
|
||||||
#######################################################################*/
|
#######################################################################*/
|
||||||
|
|
||||||
/*private :*/
|
|
||||||
|
TypeThis& CutLinkRangeIn ///////////////////////////////////////////////
|
||||||
|
(
|
||||||
|
ZCLink& AR_CutHead ,
|
||||||
|
ZCLink& AR_CutTail ,
|
||||||
|
TypeSize AL_CutSize ,
|
||||||
|
ZCLink* AP_NowStd ,
|
||||||
|
bool AB_After=true
|
||||||
|
)
|
||||||
|
/*#####################################################################*/
|
||||||
|
{
|
||||||
|
/*///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
■ AR_CutHead 는 삭제하려는 링크의 범위의 앞의 링크.
|
||||||
|
AR_CutTail 은 삭제하려는 링크의 범위의 뒤의 링크.
|
||||||
|
|
||||||
|
AR_CutHead 의 앞과 AR_CutTail 의 뒤에서 연결 상태를 끊고,
|
||||||
|
|
||||||
|
AB_After==true 이면, rhs 의 AP_NowStd 의 뒤에
|
||||||
|
AB_After==false 이면, rhs 의 AP_NowStd 의 앞에
|
||||||
|
|
||||||
|
연결한다.
|
||||||
|
|
||||||
|
AB_After==true && AP_NowStd==0 이면 맨 앞에
|
||||||
|
AB_After==false && AP_NowStd==0 이면 맨 뒤에
|
||||||
|
|
||||||
|
연결한다. -- 2025-10-12 08:19
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
if(ml_LinkSize<1){return *this;}
|
||||||
|
|
||||||
|
if(AL_CutSize>=ml_LinkSize){return *this;}
|
||||||
|
|
||||||
|
if(&AR_CutHead==mp_HeadLink && &AR_CutTail==mp_TailLink)
|
||||||
|
{ return *this; }
|
||||||
|
if(&AR_CutHead==AP_NowStd || &AR_CutTail==AP_NowStd )
|
||||||
|
{ return *this; }
|
||||||
|
/******************************************************/
|
||||||
|
|
||||||
|
if (AB_After && AP_NowStd==0) // 맨 앞에 삽입.
|
||||||
|
{
|
||||||
|
if(&AR_CutHead==mp_HeadLink)
|
||||||
|
{ /* nothing to do.*/ }
|
||||||
|
else if(mp_HeadLink->mp_NextLink==&AR_CutHead)
|
||||||
|
{
|
||||||
|
// mp_HeadLink - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
if(&AR_CutTail==mp_TailLink)
|
||||||
|
{
|
||||||
|
// 현재 : mp_HeadLink - &AR_CutHead ~ &AR_CutTail(=mp_TailLink)
|
||||||
|
// 이후 : &AR_CutHead ~ &AR_CutTail - mp_HeadLink
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, mp_HeadLink);
|
||||||
|
|
||||||
|
mp_TailLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink = &AR_CutHead ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 현재 : mp_HeadLink - &AR_CutHead ~ &AR_CutTail - VP_CutNext
|
||||||
|
// 이후 : &AR_CutHead ~ &AR_CutTail - mp_HeadLink - VP_CutNext
|
||||||
|
|
||||||
|
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||||
|
ZCLink::JoinLink(mp_HeadLink, VP_CutNext );
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, mp_TailLink);
|
||||||
|
|
||||||
|
mp_HeadLink = &AR_CutHead ;
|
||||||
|
}
|
||||||
|
}/*
|
||||||
|
else if(mp_HeadLink->mp_NextLink==&AR_CutHead)*/
|
||||||
|
|
||||||
|
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
mp_HeadLink ~ &AR_CutHead ~ &AR_CutTail
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(&AR_CutTail==mp_TailLink)
|
||||||
|
{
|
||||||
|
/*////////////////////////////////////////////
|
||||||
|
|
||||||
|
■ 현재 :
|
||||||
|
mp_HeadLink ~ VP_CutPrev -
|
||||||
|
&AR_CutHead - &AR_CutTail(mp_TailLink)
|
||||||
|
이후 :
|
||||||
|
&AR_CutHead - &AR_CutTail -
|
||||||
|
mp_HeadLink ~ VP_CutPrev
|
||||||
|
|
||||||
|
////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, VP_CutPrev );
|
||||||
|
|
||||||
|
mp_HeadLink = &AR_CutHead ;
|
||||||
|
mp_TailLink = VP_CutPrev ;
|
||||||
|
}/*
|
||||||
|
if(&AR_CutTail==mp_TailLink)*/
|
||||||
|
|
||||||
|
else /*************************************************/
|
||||||
|
{
|
||||||
|
/*////////////////////////////////////////////
|
||||||
|
|
||||||
|
■ 현재 :
|
||||||
|
mp_HeadLink ~ VP_CutPrev -
|
||||||
|
&AR_CutHead - &AR_CutTail - VP_CutNext
|
||||||
|
이후 :
|
||||||
|
&AR_CutHead - &AR_CutTail -
|
||||||
|
mp_HeadLink ~ VP_CutPrev - VP_CutNext
|
||||||
|
|
||||||
|
////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||||
|
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||||
|
ZCLink::JoinLink(&VP_CutPrev, VP_CutNext );
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, mp_TailLink);
|
||||||
|
|
||||||
|
mp_HeadLink = &AR_CutHead ;
|
||||||
|
}/*
|
||||||
|
else **************************************************/
|
||||||
|
}
|
||||||
|
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
mp_HeadLink ~ &AR_CutHead ~ &AR_CutTail
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
|
||||||
|
}/*
|
||||||
|
if (AB_After && AP_NowStd==0) // 맨 앞에 삽입.*/
|
||||||
|
|
||||||
|
else if(!AB_After && AP_NowStd==0) // 맨 뒤에 삽입.
|
||||||
|
{
|
||||||
|
if(&AR_CutTail==mp_TailLink)
|
||||||
|
{ /* nothing to do.*/ }
|
||||||
|
else if(mp_TailLink->mp_PrevLink==&AR_CutTail)
|
||||||
|
{
|
||||||
|
// &AR_CutHead ~ &AR_CutTail - mp_TailLink
|
||||||
|
|
||||||
|
if(&AR_CutHead==mp_HeadLink)
|
||||||
|
{
|
||||||
|
// 현재 : &AR_CutHead(=mp_HeadLink) ~ &AR_CutTail - mp_TailLink
|
||||||
|
// 이후 : mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||||
|
ZCLink::MakeRing(mp_TailLink, &AR_CutTail);
|
||||||
|
|
||||||
|
mp_HeadLink = mp_TailLink ;
|
||||||
|
mp_TailLink = &AR_CutTail ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 현재 : VP_CutPrev - &AR_CutHead ~ &AR_CutTail - mp_TailLink
|
||||||
|
// 이후 : VP_CutPrev - mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(VP_CutPrev, mp_TailLink);
|
||||||
|
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, &AR_CutTail);
|
||||||
|
|
||||||
|
mp_TailLink = &AR_CutTail ;
|
||||||
|
}
|
||||||
|
}/*
|
||||||
|
else if(mp_TailLink->mp_PrevLink==&AR_CutTail)*/
|
||||||
|
|
||||||
|
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
&AR_CutHead ~ &AR_CutTail ~ mp_TailLink
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(&AR_CutHead==mp_HeadLink)
|
||||||
|
{
|
||||||
|
/*////////////////////////////////////////////
|
||||||
|
|
||||||
|
■ 현재 :
|
||||||
|
(mp_HeadLink=)
|
||||||
|
&AR_CutHead ~ &AR_CutTail - VP_CutNext ~ mp_TailLink
|
||||||
|
이후 :
|
||||||
|
VP_CutNext ~ mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||||
|
ZCLink::MakeRing(VP_CutNext , &AR_CutTail);
|
||||||
|
|
||||||
|
mp_HeadLink = VP_CutNext ;
|
||||||
|
mp_TailLink = &AR_CutTail ;
|
||||||
|
}/*
|
||||||
|
if(&AR_CutHead==mp_HeadlLink)*/
|
||||||
|
|
||||||
|
else /*************************************************/
|
||||||
|
{
|
||||||
|
/*////////////////////////////////////////////
|
||||||
|
|
||||||
|
■ 현재 :
|
||||||
|
VP_CutPrev - &AR_CutHead ~
|
||||||
|
&AR_CutTail - VP_CutNext ~ mp_TailLink
|
||||||
|
이후 :
|
||||||
|
&VP_CutPrev - VP_CutNext ~
|
||||||
|
mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||||
|
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&VP_CutPrev, VP_CutNext );
|
||||||
|
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, &AR_CutTail);
|
||||||
|
|
||||||
|
mp_TailLink = &AR_CutTail ;
|
||||||
|
}/*
|
||||||
|
else **************************************************/
|
||||||
|
}
|
||||||
|
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
&AR_CutHead ~ &AR_CutTail ~ mp_TailLink
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
|
||||||
|
}/*
|
||||||
|
else if(!AB_After && AP_NowStd==0) // 맨 뒤에 삽입.*/
|
||||||
|
|
||||||
|
|
||||||
|
/*=================================================================
|
||||||
|
AP_NowStd!=0 : AP_NowStd 의 앞이나 뒤에 삽입.
|
||||||
|
=================================================================*/
|
||||||
|
else if(AR_CutTail.mp_NextLink==AP_NowStd)
|
||||||
|
{
|
||||||
|
// &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||||
|
|
||||||
|
if(!AB_After)
|
||||||
|
{ /* nothing to do*/ }
|
||||||
|
else if(&AR_CutHead==mp_HeadLink)
|
||||||
|
{
|
||||||
|
/*************************************************************
|
||||||
|
|
||||||
|
■ mp_HeadLink==&AR_CutHead && mp_TailLink!=mp_TailLink
|
||||||
|
|
||||||
|
현재 : &AR_CutHead ~ &AR_CutTail - AP_NowStd - VP_StdNext ~ mp_TailLink
|
||||||
|
이후 : AP_NowStd - &AR_CutHead ~ &AR_CutTail- VP_StdNext ~ mp_TailLink
|
||||||
|
|
||||||
|
*************************************************************/
|
||||||
|
|
||||||
|
ZCLink* VP_StdNext = AP_NowStd->mp_NextLink;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(AP_NowStd , &AR_CutHead );
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, VP_StdNext );
|
||||||
|
ZCLink::MakeRing(AP_NowStd , mp_TailLink);
|
||||||
|
|
||||||
|
mp_HeadLink = AP_NowStd ;
|
||||||
|
}/*
|
||||||
|
else if(&AR_CutHead==mp_HeadLink)*/
|
||||||
|
else if(&AR_CutTail==mp_TailLink)
|
||||||
|
{ /* nothing to do */ }
|
||||||
|
/*******************************/
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*************************************************************
|
||||||
|
|
||||||
|
■ mp_HeadLink!=&AR_CutHead && mp_TailLink!=&AR_CutTail
|
||||||
|
|
||||||
|
현재 : VP_CutPrev - &AR_CutHead ~ &AR_CutTail - AP_NowStd - VP_StdNext
|
||||||
|
이후 : VP_CutPrev - AP_NowStd - &AR_CutHead ~ &AR_CutTail- VP_StdNext
|
||||||
|
|
||||||
|
*************************************************************/
|
||||||
|
|
||||||
|
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink;
|
||||||
|
ZCLink* VP_StdNext = AP_NowStd->mp_NextLink;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(VP_CutPrev , AP_NowStd );
|
||||||
|
ZCLink::JoinLink(AP_NowStd , &AR_CutHead);
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, VP_StdNext );
|
||||||
|
}
|
||||||
|
}/*
|
||||||
|
else if(AR_CutTail.mp_NextLink==AP_NowStd)*/
|
||||||
|
|
||||||
|
else if(AR_CutHead.mp_PrevLink==AP_NowStd)
|
||||||
|
{
|
||||||
|
// AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||||
|
|
||||||
|
if(AB_After)
|
||||||
|
{ /* nothing to do*/ }
|
||||||
|
else if(&AR_CutTail==mp_TailLink)
|
||||||
|
{
|
||||||
|
if(AP_NowStd==mp_HeadLink)
|
||||||
|
{
|
||||||
|
/*************************************************************
|
||||||
|
|
||||||
|
■ AP_NowStd==mp_HeadLink && &AR_CutTail==mp_TailLink
|
||||||
|
|
||||||
|
현재 : AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||||
|
이후 : &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||||
|
|
||||||
|
*************************************************************/
|
||||||
|
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, AP_NowStd);
|
||||||
|
ZCLink::MakeRing(&AR_CutHead, AP_NowStd);
|
||||||
|
|
||||||
|
mp_HeadLink = &AR_CutHead;
|
||||||
|
mp_TailLink = AP_NowStd ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*************************************************************
|
||||||
|
|
||||||
|
■ &AR_CutTail==mp_TailLink
|
||||||
|
|
||||||
|
현재 : VP_StdPrev - AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||||
|
이후 : VP_StdPrev - &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||||
|
|
||||||
|
*************************************************************/
|
||||||
|
|
||||||
|
ZCLink* VP_StdPrev = AP_NowStd->mp_PrevLink ;
|
||||||
|
|
||||||
|
ZCLink::JoinLink(VP_StdPrev , &AR_CutHead);
|
||||||
|
ZCLink::JoinLink(&AR_CutTail, AP_NowStd );
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, AP_NowStd );
|
||||||
|
|
||||||
|
mp_TailLink = AP_NowStd ;
|
||||||
|
}
|
||||||
|
}/*
|
||||||
|
else if(&AR_CutHead==mp_HeadLink)*/
|
||||||
|
|
||||||
|
|
||||||
|
// add codes
|
||||||
|
|
||||||
|
|
||||||
|
}/*
|
||||||
|
else if(AR_CutTail.mp_NextLink==AP_NowStd)*/
|
||||||
|
/*=================================================================
|
||||||
|
AP_RhsStd!=0 : AP_RhsStd 의 앞이나 뒤에 삽입.
|
||||||
|
=================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// add codes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}/*
|
||||||
|
TypeThis& CutLinkRangeIn ///////////////////////////////////////////////
|
||||||
|
(
|
||||||
|
ZCLink& AR_CutHead ,
|
||||||
|
ZCLink& AR_CutTail ,
|
||||||
|
TypeSize AL_CutSize ,
|
||||||
|
ZCLink* AP_RhsStd ,
|
||||||
|
bool AB_After=true
|
||||||
|
)
|
||||||
|
#######################################################################*/
|
||||||
|
|
||||||
|
|
||||||
|
private :
|
||||||
|
/***************************************************************************/
|
||||||
public :
|
public :
|
||||||
|
|
||||||
ZtCBaseList()
|
ZtCBaseList()
|
||||||
@ -7480,7 +7843,6 @@ namespace ZNsMain
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TypeThis& CopyThis(TypeThis& ARR_Rhs) const
|
TypeThis& CopyThis(TypeThis& ARR_Rhs) const
|
||||||
{
|
{
|
||||||
// *this 를 복사해서, ARR_Rhs 의 끝에 연결한다.
|
// *this 를 복사해서, ARR_Rhs 의 끝에 연결한다.
|
||||||
|
Reference in New Issue
Block a user