commit 2025-10-03 17:30 add DeleteHead(TypeSize) & DeleteTail(TypeSize) in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-03 17:30:21 +09:00
parent fee4f8aee1
commit 11f79dec3a
4 changed files with 124 additions and 43 deletions

View File

@ -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 를 삽입.

View File

@ -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 = ///////////////////

View File

@ -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)
{

View File

@ -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;
}/*