commit 2025-10-03 04:31 add RecvFreeIn() etc in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-03 04:31:25 +09:00
parent b8ae34461b
commit c0cc5540b5
2 changed files with 365 additions and 127 deletions

View File

@ -5390,65 +5390,100 @@ namespace ZNsMain
}/*
TypeChild& GetChildObj()*/
private :
protected:
_VT_ ZCLink* NewLink()
ZCLink* NewLink()
{
if(TTypeCRTP::ZEUseCRTP<1) return new ZCLink;
return GetChildObj().NewLink();
return new ZCLink;
}/*
_VT_ ZCLink* NewLink()*/
ZCLink* NewLink()*/
_VT_ ZCLink* NewLink(TypeArg AO_ArgData)
ZCLink* NewLink(TypeArg AO_ArgData)
{
if(TTypeCRTP::ZEUseCRTP<1)
{ return new ZCLink(AO_ArgData); }
return GetChildObj().NewLink(AO_ArgData);
return new ZCLink(AO_ArgData);
}/*
_VT_ ZCLink* NewLink(TypeArg AO_ArgData)*/
ZCLink* NewLink(TypeArg AO_ArgData)*/
_VT_ void NewLink
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
void NewLink ////////////////////////////////////////
(
TypeSize AL_NeedCnt ,
ZCLink*& APR_HeadLink ,
ZCLink*& APR_TailLink
)
/////////////////////////////////////////////////////
{
if(TTypeCRTP::ZEUseCRTP<1)
APR_HeadLink = new ZCLink;
ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TailLink = APR_HeadLink;
while(--AL_NeedCnt>0) // AL_NeedCnt - 1 번 순환
{
APR_HeadLink = new ZCLink;
// AL_NeedCnt - 1 번 순환
ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TailLink = APR_HeadLink;
VP_MakeLink = new ZCLink;
while(--AL_NeedCnt>0) // AL_NeedCnt - 1 번 순환
{
// AL_NeedCnt - 1 번 순환
VP_MakeLink = new ZCLink;
ZCLink::JoinLink
(VP_TailLink, VP_MakeLink);
VP_TailLink = VP_MakeLink ;
}/*
while(--AL_NeedCnt>0)*/
APR_TailLink = VP_TailLink; return;
ZCLink::JoinLink
(VP_TailLink, VP_MakeLink);
VP_TailLink = VP_MakeLink ;
}/*
if(TTypeCRTP::ZEUseCRTP<1)*/
while(--AL_NeedCnt>0)*/
return GetChildObj().NewLink
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink));
APR_TailLink = VP_TailLink;
}/*
_VT_ void NewLink
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
*/
_VT_ void DelLink(ZCLink* AP_DelLink)
void NewLink ////////////////////////////////////////
(
TypeSize AL_NeedCnt ,
ZCLink*& APR_HeadLink ,
ZCLink*& APR_TailLink
)
///////////////////////////////////////////////////*/
void NewLinkCopy //////////////////////////////////
(
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
/////////////////////////////////////////////////////
{
if(TTypeCRTP::ZEUseCRTP<1)
{ delete AP_DelLink; return; }
// 총 AL_FarNum+1 개의 링크가 만들어짊
GetChildObj().DelLink(AP_DelLink);
ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TailLink = 0 ;
VP_TailLink = VP_MakeLink =
new ZCLink(**AP_LinkOrgin) ;
APR_HeadCopy = VP_MakeLink;
while(--AL_FarNum >= 0)
{
AP_LinkOrgin= AP_LinkOrgin->GetNextPtr();
VP_MakeLink = new ZCLink(**AP_LinkOrgin);
ZCLink::JoinLink
(VP_TailLink, VP_MakeLink);
VP_TailLink = VP_MakeLink;
}/*
while(--AL_FarNum >= 0)*/
APR_TailCopy=VP_TailLink;
}/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/
void NewLinkCopy //////////////////////////////////
(
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
///////////////////////////////////////////////////*/
void DelLink(ZCLink* AP_DelLink)
{
delete AP_DelLink;
}/*
void DelLink(ZCLink* AP_DelLink)*/
void DelLink //////////////////////////////////////////
(
@ -5458,25 +5493,114 @@ namespace ZNsMain
)
///////////////////////////////////////////////////////
{
ZCLink* VP_DelLink = AP_CutHead;
__for0(TypeSize, i, AL_CutCnt)
{
AP_CutHead = AP_CutHead->GetNextPtr() ;
delete VP_DelLink; VP_DelLink=AP_CutHead;
}/*
__for0(TypeSize, i, AL_CutCnt)*/
}
///////////////////////////////////////////////////////
/*protected:*/
private :
_VT_ ZCLink* SendFreeOut()
{
if(TTypeCRTP::ZEUseCRTP<1) return NewLink();
return GetChildObj().SendFreeOut();
}/*
_VT_ ZCLink* SendFreeOut()*/
_VT_ ZCLink* SendFreeOut(TypeArg AO_ArgData)
{
if(TTypeCRTP::ZEUseCRTP<1)
{ return NewLink(AO_ArgData); }
return GetChildObj().SendFreeOut(AO_ArgData);
}/*
_VT_ ZCLink* SendFreeOut(TypeArg AO_ArgData)*/
_VT_ void SendFreeOut
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
{
if(TTypeCRTP::ZEUseCRTP<1)
{
ZCLink* VP_DelLink = AP_CutHead;
NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); return;
}/*
if(TTypeCRTP::ZEUseCRTP<1)*/
__for0(TypeSize, i, AL_CutCnt)
{
AP_CutHead = AP_CutHead->GetNextPtr() ;
return GetChildObj().SendFreeOut
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink));
}/*
_VT_ void SendFreeOut
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
*/
delete VP_DelLink; VP_DelLink=AP_CutHead;
}/*
__for0(TypeSize, i, AL_CutCnt)*/
_VT_ void SendFreeOutCopy /*///////////////////////*/
(
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
/////////////////////////////////////////////////////
{
// 총 AL_FarNum+1 개의 링크가 만들어짊
if(TTypeCRTP::ZEUseCRTP<1)
{
NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); return;
}/*
if(TTypeCRTP::ZEUseCRTP<1)*/
return GetChildObj().SendFreeOutCopy
(AP_LinkOrgin, AL_FarNum, RR(APR_HeadCopy), RR(APR_TailCopy));
}/*
_VT_ void SendFreeOutCopy /////////////////////////
(
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
///////////////////////////////////////////////////*/
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
{
if(TTypeCRTP::ZEUseCRTP<1)
{ DelLink(AP_DelLink); return; }
GetChildObj().RecvFreeIn(AP_DelLink);
}/*
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn //////////////////////////////////
(
TypeSize AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
///////////////////////////////////////////////////////
{
if(TTypeCRTP::ZEUseCRTP<1)
{
DelLink
(AL_CutCnt, AP_CutHead, AP_CutTail);
return;
}/*
if(TTypeCRTP::ZEUseCRTP<1)*/
GetChildObj().DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
}
///////////////////////////////////////////////////////
GetChildObj().RecvFreeIn(AL_CutCnt, AP_CutHead, AP_CutTail);
}/*
_VT_ void RecvFreeIn //////////////////////////////////
(
TypeSize AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
/////////////////////////////////////////////////////*/
/*private :*/
private :
@ -5558,38 +5682,82 @@ namespace ZNsMain
ZtCBaseList& operator=(const ZtCBaseList& rhs)
{
// 초기에 DeleteAll() 로 다 삭제하고, 필요한 만큼
// AddTail() 을 호출하고 있는데, 최적화의 여지가 있다.
if(this==&rhs) return *this;
if(this==&rhs) return *this; this->DeleteAll();
if(rhs.size()<1)
{ this->DeleteAll(); return *this; }
ZCLink* VP_NowLink = rhs.mp_HeadLink ;
TypeSize VL_MinusSize = this->size() - rhs.size() ;
if (VL_MinusSize>0)
{
RecvFreeIn ////////////////////////////////////////
(
VL_MinusSize,
mp_HeadLink ,
mp_HeadLink->GetNextPrevPtr(VL_MinusSize-1)
);
///////////////////////////////////////////////////
ml_LinkCnt -= VL_MinusSize;
}
else if(VL_MinusSize<0)
{
ZCLink* VP_HeadLink=0;
ZCLink* VP_TailLink=0;
SendFreeOut ////////////////////////////////////////
(
-VL_MinusSize ,
RR(VP_HeadLink) ,
RR(VP_TailLink)
);
///////////////////////////////////////////////////
if(ml_LinkCnt>0)
{
ZCLink::JoinLink(mp_TailLink, VP_HeadLink);
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
mp_TailLink = VP_TailLink ;
}
else
{
mp_HeadLink = VP_HeadLink ;
mp_TailLink = VP_TailLink ;
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
}/*
else*/
ml_LinkCnt += (-VL_MinusSize);
}/*
else if(VL_MinusSize<0)*/
ZCLink* VP_RhsLink = rhs.mp_HeadLink ;
ZCLink* VP_LhsLink = mp_HeadLink ;
__for0(TypeSize, i, rhs.size())
{
this->AddTail(VP_NowLink->mo_Data) ;
**VP_LhsLink = **VP_RhsLink ;
VP_NowLink = VP_NowLink->mp_NextLink;
VP_RhsLink = VP_RhsLink->mp_NextLink;
VP_LhsLink = VP_LhsLink->mp_NextLink;
}/*
__for0(TypeSize, i, rhs.size())*/
return *this;
}/*
ZtCBaseList& operator=(const ZtCBaseList& rhs)*/
void DeleteAll()
{
ZCLink* VP_NowLink = mp_HeadLink;
if(ml_LinkCnt<1) return;
while(--ml_LinkCnt>=0)
{
ZCLink* VP_NextLink =
VP_NowLink->mp_NextLink ;
DelLink(VP_NowLink);
VP_NowLink = VP_NextLink;
}/*
while(--ml_LinkCnt>=0)*/
RecvFreeIn
(ml_LinkCnt, mp_HeadLink, mp_TailLink);
mp_HeadLink =0 ;
mp_TailLink =0 ;
@ -5599,9 +5767,9 @@ namespace ZNsMain
TypeData& AddHead()
{ return AddHeadLink(NewLink())->mo_Data; }
{ return AddHeadLink(SendFreeOut())->mo_Data; }
TypeData& AddTail()
{ return AddTailLink(NewLink())->mo_Data; }
{ return AddTailLink(SendFreeOut())->mo_Data; }
TypeData& AddHead(TypeArg AO_ArgData) /*########################*/
@ -5609,7 +5777,7 @@ namespace ZNsMain
#if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{
ZCLink* VP_NewNode = NewLink(AO_ArgData);
ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5626,7 +5794,7 @@ namespace ZNsMain
#if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{
ZCLink* VP_NewNode = NewLink(AO_ArgData);
ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5646,7 +5814,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_HeadLink ;
mp_HeadLink = mp_HeadLink->mp_NextLink ;
DelLink(VP_TempLink);
RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1)
{
@ -5666,7 +5834,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_TailLink ;
mp_TailLink = mp_TailLink->mp_PrevLink ;
DelLink(VP_TempLink);
RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1)
{

View File

@ -88,10 +88,7 @@ namespace ZNsMain
class ZCBaseListEx10 : public ZtCBaseList
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
@ -100,10 +97,7 @@ namespace ZNsMain
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
@ -111,10 +105,7 @@ namespace ZNsMain
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>;
@ -124,29 +115,62 @@ namespace ZNsMain
private:
_VT_ ZCLink* NewLink()
_VT_ ZCLink* SendFreeOut()
{
cout<<"** ZCBaseListEx10 : NewLink()"<<endl;
cout<<"** ZCBaseListEx10 : SendFreeOut()"<<endl;
return new ZCLink;
return this->ZCBaseList::NewLink();
}/*
_VT_ ZCLink* NewLink()*/
_VT_ ZCLink* SendFreeOut()*/
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
{
cout<<"** ZCBaseListEx10 : NewLink(TypeArg)"<<endl;
cout<<"** ZCBaseListEx10 : SendFreeOut(TypeArg)"<<endl;
return new ZCLink(AO_ArgData);
return this->ZCBaseList::NewLink(AO_ArgData);
}/*
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
_VT_ void DelLink(ZCLink* AP_DelLink)
_VT_ void SendFreeOut
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
{
cout<<"** ZCBaseListEx10 : DelLink(ZCLink*)"<<endl;
cout<<"** ZCBaseListEx10 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
delete AP_DelLink;
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
}
_VT_ void SendFreeOutCopy /*///////////////////////*/
(
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
/////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
}
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx10 : RecvFreeIn(AP_DelLink)"<<endl;
this->ZCBaseList::DelLink(AP_DelLink);
}/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn //////////////////////////////////
(
ZTypLong AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
///////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx10 : RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
}
private:
};/*
@ -155,10 +179,7 @@ namespace ZNsMain
class ZCBaseListEx11 : public ZtCBaseList
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
@ -167,10 +188,7 @@ namespace ZNsMain
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
@ -178,10 +196,7 @@ namespace ZNsMain
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>;
@ -191,29 +206,62 @@ namespace ZNsMain
private:
_VT_ ZCLink* NewLink()
_VT_ ZCLink* SendFreeOut()
{
cout<<"** ZCBaseListEx11 : NewLink()"<<endl;
cout<<"** ZCBaseListEx11 : SendFreeOut()"<<endl;
return new ZCLink;
return this->ZCBaseList::NewLink();
}/*
_VT_ ZCLink* NewLink()*/
_VT_ ZCLink* SendFreeOut()*/
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
{
cout<<"** ZCBaseListEx11 : NewLink(TypeArg)"<<endl;
cout<<"** ZCBaseListEx11 : SendFreeOut(CStringBase&)"<<endl;
return new ZCLink(AO_ArgData);
return this->ZCBaseList::NewLink(AO_ArgData);
}/*
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
_VT_ void DelLink(ZCLink* AP_DelLink)
_VT_ void SendFreeOut
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
{
cout<<"** ZCBaseListEx11 : DelLink(ZCLink*)"<<endl;
cout<<"** ZCBaseListEx11 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
delete AP_DelLink;
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
}
_VT_ void SendFreeOutCopy /*///////////////////////*/
(
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
/////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
}
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx11 : RecvFreeIn(AP_DelLink)"<<endl;
this->ZCBaseList::DelLink(AP_DelLink);
}/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn //////////////////////////////////
(
ZTypLong AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
///////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx11: RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
}
private:
};/*
@ -286,15 +334,37 @@ namespace ZNsMain
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
ZCBaseListEx10 VO_ZCBaseListEx10;
ZCBaseListEx11 VO_ZCBaseListEx11;
cout<<endl<<"#### ZCBaseListEx10 and ZCBaseListEx11 ####"<<endl<<endl;
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-1"));
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-2"));
ZCBaseListEx10 VO_ZCBaseListEx10 ;
ZCBaseListEx10 VO_ZCBaseListEx10_2;
ZCBaseListEx11 VO_ZCBaseListEx11 ;
VO_CStringBase="";
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-1"));
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-2"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-1"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-2"));
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx11"<<endl<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-3"));
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-4"));
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx11 after VO_ZCBaseListEx10.AddTail() 2 times"<<endl<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
VO_ZCBaseListEx10_2.DeleteTail();
cout<<endl<<"# VO_ZCBaseListEx10_2DeleteTail()"<<endl<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/