commit 2025-10-03 17:30 add DeleteHead(TypeSize) & DeleteTail(TypeSize) in ZtCBaseList : ZCppMain/ZMainHead.H
This commit is contained in:
@ -5883,6 +5883,70 @@ namespace ZNsMain
|
|||||||
void DeleteTail()*/
|
void DeleteTail()*/
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteHead(TTypSize AL_DelSize)
|
||||||
|
{
|
||||||
|
// AL_DelSize 개의 링크를 앞 부분에서 삭제
|
||||||
|
|
||||||
|
if(ml_LinkSize<1 || AL_DelSize<1){ return; }
|
||||||
|
|
||||||
|
if(AL_DelSize > ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
||||||
|
|
||||||
|
if(AL_DelSize==ml_LinkSize)
|
||||||
|
{
|
||||||
|
RecvFreeIn
|
||||||
|
(ml_LinkSize, mp_HeadLink, mp_TailLink);
|
||||||
|
mp_HeadLink=0 ;
|
||||||
|
mp_TailLink=0 ;
|
||||||
|
ml_LinkSize=0 ;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}/*
|
||||||
|
if(AL_DelSize==ml_LinkSize)*/
|
||||||
|
|
||||||
|
ZCLink* VP_NewHead =
|
||||||
|
mp_HeadLink->GetNextPrevPtr( AL_DelSize ) ;
|
||||||
|
RecvFreeIn
|
||||||
|
(AL_DelSize, mp_HeadLink, VP_NewHead->mp_PrevLink);
|
||||||
|
|
||||||
|
mp_HeadLink = VP_NewHead ;
|
||||||
|
ml_LinkSize -= AL_DelSize ;
|
||||||
|
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
|
||||||
|
}/*
|
||||||
|
void DeleteHead(TTypSize AL_DelSize)*/
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteTail(TTypSize AL_DelSize)
|
||||||
|
{
|
||||||
|
if(ml_LinkSize==0 || AL_DelSize<1){ return; }
|
||||||
|
|
||||||
|
if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
||||||
|
|
||||||
|
if(AL_DelSize==ml_LinkSize)
|
||||||
|
{
|
||||||
|
RecvFreeIn
|
||||||
|
(ml_LinkSize, mp_HeadLink, mp_TailLink);
|
||||||
|
mp_HeadLink=0 ;
|
||||||
|
mp_TailLink=0 ;
|
||||||
|
ml_LinkSize=0 ;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}/*
|
||||||
|
if(AL_DelSize==ml_LinkSize)*/
|
||||||
|
|
||||||
|
ZCLink* VP_NewTail =
|
||||||
|
mp_TailLink->GetNextPrevPtr( -AL_DelSize ) ;
|
||||||
|
RecvFreeIn
|
||||||
|
(AL_DelSize, VP_NewTail->mp_NextLink, mp_TailLink);
|
||||||
|
|
||||||
|
mp_TailLink = VP_NewTail ;
|
||||||
|
ml_LinkSize -= AL_DelSize ;
|
||||||
|
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
|
||||||
|
}/*
|
||||||
|
void DeleteTail(TTypSize AL_DelSize)*/
|
||||||
|
|
||||||
|
|
||||||
ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)
|
ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)
|
||||||
{
|
{
|
||||||
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
||||||
|
@ -1781,24 +1781,39 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
ZtCObjList& DeleteHead()*/
|
ZtCObjList& DeleteHead()*/
|
||||||
|
|
||||||
ZtCObjList& DeleteHead(TypeSize AI_DeleteCnt)
|
|
||||||
{
|
|
||||||
__for1(TypeSize, i, AI_DeleteCnt)
|
|
||||||
{
|
|
||||||
if(this->size()<1) return *this;
|
|
||||||
|
|
||||||
#if(_CODE_NEW_)
|
void DeleteHead(TTypSize AL_DelSize)
|
||||||
mo_FreeObjt.RecvFreeIn
|
{
|
||||||
( this->CutLink(mp_HeadLink) );
|
// AL_DelSize 개의 링크를 앞 부분에서 삭제
|
||||||
#else
|
|
||||||
delete this->CutLink(mp_HeadLink) ;
|
|
||||||
#endif
|
|
||||||
}/*
|
|
||||||
__for1(TypeSize, i, AI_DeleteCnt)*/
|
|
||||||
|
|
||||||
return *this;
|
if(ml_LinkSize<1 || AL_DelSize<1){ return; }
|
||||||
|
|
||||||
|
if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
||||||
|
|
||||||
|
if(AL_DelSize==ml_LinkSize)
|
||||||
|
{
|
||||||
|
GetCFreeHeap().RecvFreeIn
|
||||||
|
(ml_LinkSize, mp_HeadLink, mp_HeadLink->mp_PrevLink);
|
||||||
|
mp_HeadLink=0 ;
|
||||||
|
ml_LinkSize=0 ;
|
||||||
|
|
||||||
|
return;
|
||||||
}/*
|
}/*
|
||||||
ZtCObjList& DeleteHead(TypeSize AI_DeleteCnt)*/
|
if(AL_DelSize==ml_LinkSize)*/
|
||||||
|
|
||||||
|
ZCLink* VP_TailLink= mp_HeadLink->mp_PrevLink;
|
||||||
|
ZCLink* VP_NewHead = mp_HeadLink->
|
||||||
|
GetNextPtr( AL_DelSize );
|
||||||
|
GetCFreeHeap().RecvFreeIn
|
||||||
|
(AL_DelSize, mp_HeadLink, VP_NewHead->mp_PrevLink);
|
||||||
|
|
||||||
|
mp_HeadLink = VP_NewHead ;
|
||||||
|
ml_LinkSize -= AL_DelSize ;
|
||||||
|
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
|
||||||
|
}/*
|
||||||
|
void DeleteHead(TTypSize AL_DelSize)*/
|
||||||
|
|
||||||
|
|
||||||
ZtCObjList& DeleteTail()
|
ZtCObjList& DeleteTail()
|
||||||
{
|
{
|
||||||
@ -1815,6 +1830,36 @@ namespace ZNsMain
|
|||||||
ZtCObjList& DeleteTail()*/
|
ZtCObjList& DeleteTail()*/
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteTail(TTypSize AL_DelSize)
|
||||||
|
{
|
||||||
|
if(ml_LinkSize==0 || AL_DelSize<1){ return; }
|
||||||
|
|
||||||
|
if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
||||||
|
|
||||||
|
if(AL_DelSize==ml_LinkSize)
|
||||||
|
{
|
||||||
|
GetCFreeHeap().RecvFreeIn
|
||||||
|
(ml_LinkSize, mp_HeadLink, mp_HeadLink->mp_PrevLink);
|
||||||
|
mp_HeadLink=0 ;
|
||||||
|
ml_LinkSize=0 ;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}/*
|
||||||
|
if(AL_DelSize==ml_LinkSize)*/
|
||||||
|
|
||||||
|
ZCLink* VP_TailLink= mp_HeadLink->mp_PrevLink;
|
||||||
|
ZCLink* VP_NewTail = VP_TailLink->
|
||||||
|
GetPrevPtr( AL_DelSize ) ;
|
||||||
|
GetCFreeHeap().RecvFreeIn
|
||||||
|
(AL_DelSize, VP_NewTail->mp_NextLink, VP_TailLink);
|
||||||
|
|
||||||
|
ml_LinkSize -= AL_DelSize ;
|
||||||
|
|
||||||
|
ZCLink::MakeRing(mp_HeadLink, VP_NewTail);
|
||||||
|
}/*
|
||||||
|
void DeleteTail(TTypSize AL_DelSize)*/
|
||||||
|
|
||||||
|
|
||||||
ZCLink* AddDefault(TypeSize AL_DefaultSize, TypeSize AL_AddPos)
|
ZCLink* AddDefault(TypeSize AL_DefaultSize, TypeSize AL_AddPos)
|
||||||
{
|
{
|
||||||
const bool CB_IsTrue = ///////////////////
|
const bool CB_IsTrue = ///////////////////
|
||||||
|
@ -1813,35 +1813,6 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
void DeleteTail()*/
|
void DeleteTail()*/
|
||||||
|
|
||||||
void DeleteTail(TTypSize AL_DelSize)
|
|
||||||
{
|
|
||||||
if(ml_LinkSize==0 || AL_DelSize<1){ return; }
|
|
||||||
|
|
||||||
if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
|
||||||
|
|
||||||
if(AL_DelSize==ml_LinkSize)
|
|
||||||
{
|
|
||||||
GetCFreeHeap().RecvFreeIn
|
|
||||||
(ml_LinkSize, mp_HeadLink, mp_TailLink);
|
|
||||||
mp_HeadLink=0 ;
|
|
||||||
mp_TailLink=0 ;
|
|
||||||
ml_LinkSize=0 ;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}/*
|
|
||||||
if(AL_DelSize==ml_LinkSize)*/
|
|
||||||
|
|
||||||
ZCLink* VP_NewTail= mp_TailLink->
|
|
||||||
GetNextPtr( -AL_DelSize );
|
|
||||||
GetCFreeHeap().RecvFreeIn
|
|
||||||
(AL_DelSize, VP_NewTail->mp_NextLink, mp_TailLink);
|
|
||||||
|
|
||||||
mp_TailLink = VP_NewTail ;
|
|
||||||
ml_LinkSize -= AL_DelSize ;
|
|
||||||
|
|
||||||
ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
|
|
||||||
}/*
|
|
||||||
void DeleteTail(TTypSize AL_DelSize)*/
|
|
||||||
|
|
||||||
void Delete(ZCLink* AP_PrevLink, ZCLink* AP_CutLink)
|
void Delete(ZCLink* AP_PrevLink, ZCLink* AP_CutLink)
|
||||||
{
|
{
|
||||||
|
@ -367,9 +367,10 @@ namespace ZNsMain
|
|||||||
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode);
|
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode);
|
||||||
|
|
||||||
|
|
||||||
VO_ZCBaseListEx10_2.DeleteTail();
|
cout<<endl<<"# VO_ZCBaseListEx10_2 : DeleteTail(2)"<<endl<<endl;
|
||||||
|
|
||||||
cout<<endl<<"# VO_ZCBaseListEx10_2 : DeleteTail()"<<endl<<endl;
|
VO_ZCBaseListEx10_2.DeleteTail(2);
|
||||||
|
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}/*
|
}/*
|
||||||
|
Reference in New Issue
Block a user