commit 2025-08-17 02:51 utf8 변환 : ZCppMain/ZtCSortObjList.H
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
|
||||
#ifndef __ZCPPMAIN__ZCSORT_LIST_H__
|
||||
#define __ZCPPMAIN__ZCSORT_LIST_H__
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
/*////////////////////////////////////////////////////
|
||||
|
||||
<EFBFBD><EFBFBD> CDoublieList.H <EFBFBD><EFBFBD> CObjList.H <EFBFBD><EFBFBD> include <EFBFBD>Ѵ<EFBFBD>.
|
||||
■ CDoublieList.H 와 CObjList.H 가 include 한다.
|
||||
|
||||
-- 2013-04-30 22:57:00
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
namespace ZNsMain
|
||||
{
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ḯ<EFBFBD><E1B8AE>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
// 양방향 연결리스트에 대한 정렬 클래스이다.
|
||||
|
||||
template<typename TTypObjList> class ZtCSortObjList
|
||||
{
|
||||
@ -32,8 +32,8 @@ namespace ZNsMain
|
||||
|
||||
static inline bool IsMore(TypeArg AR_LeftType, TypeArg AR_RightType)
|
||||
{
|
||||
/* IsMore() <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> IsLess() <EFBFBD><EFBFBD> QuickSort() <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD>Լ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>. */
|
||||
/* IsMore() 함수와 IsLess() 는 QuickSort() 멤버 함수에서 쓰는
|
||||
함수 포인터에 대입하기 위해서 정의하였다. */
|
||||
|
||||
return AR_LeftType > AR_RightType ;
|
||||
}/*
|
||||
@ -83,8 +83,8 @@ namespace ZNsMain
|
||||
|
||||
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]);
|
||||
|
||||
<EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD>ó<EFBFBD><C3B3> 2 <20>ٷ<EFBFBD> <20><><EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ʾƼ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
|
||||
않아서 좋다.
|
||||
*/
|
||||
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j];
|
||||
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
|
||||
@ -131,7 +131,7 @@ namespace ZNsMain
|
||||
|
||||
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]);
|
||||
|
||||
<EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD>ó<EFBFBD><C3B3> 2 <20>ٷ<EFBFBD> <20><><EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƼ<CABE> <20><><EFBFBD><EFBFBD>.*/
|
||||
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 않아서 좋다.*/
|
||||
|
||||
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j];
|
||||
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
|
||||
@ -172,8 +172,8 @@ namespace ZNsMain
|
||||
|
||||
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]);
|
||||
|
||||
<EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD>ó<EFBFBD><C3B3> 2 <20>ٷ<EFBFBD> <20><><EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ʾƼ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
|
||||
않아서 좋다.
|
||||
*/
|
||||
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j];
|
||||
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
|
||||
@ -224,7 +224,7 @@ namespace ZNsMain
|
||||
QuickSortAsc (VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
else QuickSortDesc(VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 <EFBFBD><EFBFBD> <20><>ȯ
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환
|
||||
{
|
||||
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
|
||||
}/*
|
||||
@ -277,7 +277,7 @@ namespace ZNsMain
|
||||
QuickSort
|
||||
(APF_IsMore, APF_IsLess, VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 <EFBFBD><EFBFBD> <20><>ȯ
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환
|
||||
{
|
||||
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
|
||||
}/*
|
||||
@ -312,7 +312,7 @@ namespace ZNsMain
|
||||
)
|
||||
/*##################################################*/
|
||||
{
|
||||
// AP_HeadLink <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AP_TailLink <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// AP_HeadLink 부터 AP_TailLink 까지만 정렬
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
@ -368,7 +368,7 @@ namespace ZNsMain
|
||||
QuickSortAsc (VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
else QuickSortDesc(VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 <EFBFBD><EFBFBD> <20><>ȯ
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환
|
||||
{
|
||||
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
|
||||
}/*
|
||||
@ -400,11 +400,11 @@ namespace ZNsMain
|
||||
{
|
||||
/*/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD>Ḯ<EFBFBD><E1B8AE>Ʈ ARR_AddList <EFBFBD><EFBFBD> ARR_CutList <EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD>ĵǾ<C4B5> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǽ<EFBFBD><C7BD>Ѵ<EFBFBD>. ARR_CutList <20><> <20><> <20><>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD>ʷ<EFBFBD> <20><><EFBFBD><EFBFBD> ARR_AddList <EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ARR_AddList <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ĵǾ<C4B5>
|
||||
<EFBFBD>ִٸ<EFBFBD> ARR_CutList <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ĵǾ<C4B5> <20>־<EFBFBD><D6BE><EFBFBD> <20>ϰ<EFBFBD>, AB_IsAscending <EFBFBD><EFBFBD>
|
||||
true <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
|
||||
■ 연결리스트 ARR_AddList 와 ARR_CutList 는 이미 정렬되어 있는 것으로 간주하여
|
||||
병합 정렬을 실시한다. ARR_CutList 의 앞 링크부터 차례로 끊어 ARR_AddList 의
|
||||
적당한 링크에 삽입한다. 이 병합 정렬은 ARR_AddList 가 오름차순으로 정렬되어
|
||||
있다면 ARR_CutList 도 오름차순으로 정렬되어 있어야 하고, AB_IsAscending 도
|
||||
true 여야 원하는 결과를 얻을 수 있다.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@ -412,8 +412,8 @@ namespace ZNsMain
|
||||
ARR_AddList.mp_HeadLink==0 ||
|
||||
ARR_CutList.mp_HeadLink==0 ) return ;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>¥<EFBFBD><C2A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. */
|
||||
/* 먼저 각 리스크를 삭제하는 신호를 보낸다. 진짜로 삭제하는 것은 아니지만,
|
||||
링크를 이동시키는 과정에서 발생할 수 있는 에러를 막는데는 도움이 된다. */
|
||||
|
||||
ARR_AddList.OnDelete( ARR_AddList.mp_HeadLink, 1,
|
||||
ARR_AddList.mp_HeadLink->mp_PrevLink, ARR_AddList.ml_Size );
|
||||
@ -427,7 +427,7 @@ namespace ZNsMain
|
||||
|
||||
if(pf_IsTrueValue(ARR_AddList.GetTailData(), ARR_CutList.GetHeadData())==false)
|
||||
{
|
||||
ARR_AddList.JoinTail(ARR_CutList); return; // <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD> <20><> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20><><EFBFBD><EFBFBD>.
|
||||
ARR_AddList.JoinTail(ARR_CutList); return; // 이때는 더 이상 비교할 필요가 없다.
|
||||
}/*
|
||||
if(pf_IsTrueValue(ARR_AddList.GetTailData(), ARR_CutList.GetHeadData())==false)*/
|
||||
|
||||
@ -435,7 +435,7 @@ namespace ZNsMain
|
||||
ZCLink* VP_LhsTemp =ARR_AddList.mp_HeadLink;
|
||||
ZCLink* VP_RhsHead =ARR_CutList.mp_HeadLink;
|
||||
|
||||
TypeSize VL_LhsTempPos=1 ; // VP_LhsTemp <EFBFBD><EFBFBD> <20><>ġ
|
||||
TypeSize VL_LhsTempPos=1 ; // VP_LhsTemp 의 위치
|
||||
bool VB_IsMoved =false;
|
||||
ZCLink* VP_TempLink =0 ;
|
||||
|
||||
@ -451,8 +451,8 @@ namespace ZNsMain
|
||||
VL_LhsTempPos
|
||||
/*/////////////////*/ ); //////////////////////////////////
|
||||
|
||||
/* VP_LhsTemp <EFBFBD>տ<EFBFBD> <20><>ũ<EFBFBD><C5A9> <20>ϳ<EFBFBD> <20><><EFBFBD>ԵǾ<D4B5><C7BE><EFBFBD><EFBFBD>Ƿ<EFBFBD>,
|
||||
VP_LhsTemp <EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20>ϳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>. */
|
||||
/* VP_LhsTemp 앞에 링크가 하나 삽입되었으므로,
|
||||
VP_LhsTemp 의 위치값을 하나 증가시킨다. */
|
||||
|
||||
++VL_LhsTempPos; VB_IsMoved=true;
|
||||
}/*
|
||||
@ -489,7 +489,7 @@ namespace ZNsMain
|
||||
bool AB_IsAscending=true
|
||||
/*#########*/ ) /*#########################################*/
|
||||
{
|
||||
// ARR_CObjList <EFBFBD><EFBFBD> <20><> <20><><EFBFBD>带 <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// ARR_CObjList 의 각 노드를 유일하게 만든다.
|
||||
|
||||
if(AB_IsSorted==false)
|
||||
QuickSort(ARR_CObjList,AB_IsAscending);
|
||||
@ -499,8 +499,8 @@ namespace ZNsMain
|
||||
ZCLink* VP_HeadLink= ARR_CObjList.GetHeadLinkPtr();
|
||||
ZCLink* VP_CutLink = 0 ;
|
||||
|
||||
/* VL_LoopSize-1 <EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ұ<EFBFBD> <20>̿<EFBFBD><CCBF>Ѵٸ<D1B4>
|
||||
<EFBFBD>յ<EFBFBD> <20><><EFBFBD>忡 <20><><EFBFBD><EFBFBD> <20> ó<><C3B3><EFBFBD><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>带 <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. */
|
||||
/* VL_LoopSize-1 번 순환하며 같은 원소가 이웃한다면
|
||||
앞뒤 노드에 대해 어떤 처리를 하고 뒤쪽의 노드를 삭제한다. */
|
||||
|
||||
for(TypeSize i=1; i<VL_LoopSize; ++i)
|
||||
{
|
||||
@ -534,7 +534,7 @@ namespace ZNsMain
|
||||
bool AB_IsAscending=true
|
||||
/*#########*/ ) /*#########################################*/
|
||||
{
|
||||
// ARR_CObjList <EFBFBD><EFBFBD> <20><> <20><><EFBFBD>带 <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// ARR_CObjList 의 각 노드를 유일하게 만든다.
|
||||
|
||||
if(AB_IsSorted==false)
|
||||
QuickSort(ARR_CObjList,AB_IsAscending);
|
||||
@ -544,8 +544,8 @@ namespace ZNsMain
|
||||
ZCLink* VP_HeadLink =ARR_CObjList.GetHeadLinkPtr();
|
||||
ZCLink* VP_CutLink =0 ;
|
||||
|
||||
/* VL_LoopSize-1 <EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ұ<EFBFBD> <20>̿<EFBFBD><CCBF>Ѵٸ<D1B4>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>带 <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
/* VL_LoopSize-1 번 순환하며 같은 원소가 이웃한다면
|
||||
뒤쪽의 노드를 삭제한다.
|
||||
*/
|
||||
for(TypeSize i=1; i<VL_LoopSize; ++i)
|
||||
{
|
||||
@ -576,14 +576,14 @@ namespace ZNsMain
|
||||
bool AB_IsAscending=true
|
||||
/*#########*/ ) /*#########################################*/
|
||||
{
|
||||
/* ARR_CObjList <EFBFBD><EFBFBD> <20><> <20><><EFBFBD>带 <20><><EFBFBD><EFBFBD> <20>ͳ<EFBFBD><CDB3><EFBFBD> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> AR_Functor <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
/* ARR_CObjList 의 각 노드를 같은 것끼리 그룹으로 묵어서
|
||||
묶여진 리스트에 대해 AR_Functor 를 수행한다.
|
||||
*/
|
||||
if(ARR_CObjList.IsEmpty()) return;
|
||||
|
||||
if(AB_IsSorted==false)
|
||||
{
|
||||
QuickSort(ARR_CObjList, AB_IsAscending); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵǾ<C8B5><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϰ<EFBFBD>...
|
||||
QuickSort(ARR_CObjList, AB_IsAscending); // 정렬이 안되었으면 정렬을 하고...
|
||||
}/*
|
||||
if(AB_IsSorted==false)*/
|
||||
|
||||
@ -594,7 +594,7 @@ namespace ZNsMain
|
||||
ZCLink* VP_CutTail =VP_CutHead ;
|
||||
ZCLink* VP_CutTemp =VP_CutTail->GetNextPtr() ;
|
||||
|
||||
// VL_LoopSize-1 <EFBFBD><EFBFBD> <20><>ȯ
|
||||
// VL_LoopSize-1 번 순환
|
||||
|
||||
for(TypeSize i=2; i<=VL_LoopSize; ++i)
|
||||
{
|
||||
@ -607,11 +607,11 @@ namespace ZNsMain
|
||||
}
|
||||
else // VP_CutTail->GetData()!=VP_CutTemp->GetData()
|
||||
{
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ٴ<EFBFBD> <20><><EFBFBD>̴<EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> functor <20><> ó<><C3B3><EFBFBD><EFBFBD> <20>ѱ<EFBFBD><D1B1><EFBFBD>. functor <EFBFBD><EFBFBD>
|
||||
<EFBFBD>Ѱܹ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ݵ<EFBFBD><DDB5><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD>) <20>Ѵ<EFBFBD>. CutLink()
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִµ<D6B4>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڷᰡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵDZ<C8B5> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>. */
|
||||
/* 다음 노드와 다르면 이전 노드들은 서로 같다는 것이다.
|
||||
이전 노드들은 functor 로 처리를 넘긴다. functor 는
|
||||
넘겨받은 리스트를 반드시 써야(삭제해야) 한다. CutLink()
|
||||
멤버 함수는 내부에 정적 리스트 개체를 가지고 있는데
|
||||
여기에 쓸데없는 자료가 남겨져서는 안되기 때문이다. */
|
||||
|
||||
AR_Functor //////////////////////////////////////
|
||||
(
|
||||
@ -647,7 +647,7 @@ namespace ZNsMain
|
||||
|
||||
|
||||
|
||||
// <EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ḯ<EFBFBD><E1B8AE>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
// 단방향 연결리스트에 대한 정렬 클래스이다.
|
||||
|
||||
template<typename TTypObjList> class ZtCSortSimList
|
||||
{
|
||||
@ -698,8 +698,8 @@ namespace ZNsMain
|
||||
|
||||
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex],APA_LinkPtrArr[j]);
|
||||
|
||||
<EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD>ó<EFBFBD><C3B3> 2 <20>ٷ<EFBFBD> <20><><EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ʾƼ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
|
||||
않아서 좋다.
|
||||
*/
|
||||
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j];
|
||||
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
|
||||
@ -760,13 +760,13 @@ namespace ZNsMain
|
||||
|
||||
QuickSort(APF_IsMore, APF_IsLess, VPP_LinkPtrArr, 0, VL_SortSize-1);
|
||||
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 <EFBFBD><EFBFBD> <20><>ȯ
|
||||
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환
|
||||
{
|
||||
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
|
||||
}
|
||||
////////////////////////////
|
||||
|
||||
#if(_CODE_OLD_) // <EFBFBD>Ʒ<EFBFBD> <20>ڵ常 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
#if(_CODE_OLD_) // 아래 코드만 빠진다.
|
||||
ZCLink::MakeCircle(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
|
||||
#else
|
||||
ARR_CObjList.mp_HeadLink=VPP_LinkPtrArr[0] ;
|
||||
|
Reference in New Issue
Block a user