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 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)
|
||||
{
|
||||
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
||||
|
@ -1781,24 +1781,39 @@ namespace ZNsMain
|
||||
}/*
|
||||
ZtCObjList& DeleteHead()*/
|
||||
|
||||
ZtCObjList& DeleteHead(TypeSize AI_DeleteCnt)
|
||||
|
||||
void DeleteHead(TTypSize AL_DelSize)
|
||||
{
|
||||
__for1(TypeSize, i, AI_DeleteCnt)
|
||||
// AL_DelSize 개의 링크를 앞 부분에서 삭제
|
||||
|
||||
if(ml_LinkSize<1 || AL_DelSize<1){ return; }
|
||||
|
||||
if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
|
||||
|
||||
if(AL_DelSize==ml_LinkSize)
|
||||
{
|
||||
if(this->size()<1) return *this;
|
||||
GetCFreeHeap().RecvFreeIn
|
||||
(ml_LinkSize, mp_HeadLink, mp_HeadLink->mp_PrevLink);
|
||||
mp_HeadLink=0 ;
|
||||
ml_LinkSize=0 ;
|
||||
|
||||
#if(_CODE_NEW_)
|
||||
mo_FreeObjt.RecvFreeIn
|
||||
( this->CutLink(mp_HeadLink) );
|
||||
#else
|
||||
delete this->CutLink(mp_HeadLink) ;
|
||||
#endif
|
||||
return;
|
||||
}/*
|
||||
__for1(TypeSize, i, AI_DeleteCnt)*/
|
||||
if(AL_DelSize==ml_LinkSize)*/
|
||||
|
||||
return *this;
|
||||
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);
|
||||
}/*
|
||||
ZtCObjList& DeleteHead(TypeSize AI_DeleteCnt)*/
|
||||
void DeleteHead(TTypSize AL_DelSize)*/
|
||||
|
||||
|
||||
ZtCObjList& DeleteTail()
|
||||
{
|
||||
@ -1815,6 +1830,36 @@ namespace ZNsMain
|
||||
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)
|
||||
{
|
||||
const bool CB_IsTrue = ///////////////////
|
||||
|
@ -1813,35 +1813,6 @@ namespace ZNsMain
|
||||
}/*
|
||||
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)
|
||||
{
|
||||
|
@ -367,9 +367,10 @@ namespace ZNsMain
|
||||
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;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user