[리스트 클래스] p.351~


클래스

데이터 형식

CstringList

CString

CptrList

void *

CObList

CObject *

CString 형과 같이 직접 지원되는 경우는 CStrinList에 저장하고, 그렇지 않으면 CptrList 클래스에 저장하면 된다.


함수

기능

GetCount

리스트에 저장된 항목의 개수를 반환

IsEmpty

리스트에 저장된 항목이 없으면 TRUE 반환

GetHead

첫 노드의 값을 반환

GetTail

마지막 노드의 값을 반환

GetHeadPosition

첫 노드의 포인터를 반환

GetTailPosition

마지막 노드의 포인터를 반환

GetAt

주어진 포인터가 가리키는 값을 반환

GetNext

주어진 포인터가 가리키는 값을 반환하고, 포인터는 다음 노드를 가리키도록 한다.

GetPrev

주어진 포인터가 가리키는 값을 반환하고, 포인터는 이전 노드를 가리키도록 한다.

SetAt

주어진 포인터가 가리키는 값을 설정

AddHead

첫 노드 앞에 새로운 노드를 추가

AddTail

마지막 노드 뒤에 새로운 노드를 추가

InsertAfter

주어진 포인터가 가리키는 노드 뒤에 새로운 노드를 추가

InsertBefore

주어진 포인터가 가리키는 노드 앞에 새로운 노드를 추가

RemoveHead

첫 노드를 삭제

RemoveTail

마지막 노드를 삭제

RemoveAt

주어진 포인터가 가리키는 노드를 삭제

RemoveAll

모든 노드를 삭제

Find

주어진 값을 갖는 노드를 찾아 그 노드의 포인터를 반환

FindIndex

주어진 인덱스를 갖는 노드를 찾아 그 노드의 포인터를 반환


예제 소스)


Cstring strData[] = {_T(“SUN”), _T(“MON”), _T(“TUE”), _T(“WED”), _T(“THU”), _T(“FRI”), _T(“SAT”) };


void main()

{

Cstring data;

CstringList list;

POSITION pos;


for(int i=0; i<7; i++)

{

list.AddTail(strData[i]);
}

//AddTail 함수를 호출하여 리스트의 맨 마지막에 노드를 하나씩 추가!!

//AddHead 함수를 호출하게 되면, 순서가 바뀌게 된다!!

data = list.GetHead();

cout<<”Head: “<<data <<endl;

data = list.GetTail();

cout<<”Tail:” <<data <<endl;

//값은 각각 SUNSAT이 출력된다.


pos = list.GetHeadPosition();

while(pos)

{

data = list.GetNext(pos);

cout<<data<<endl;
}

// 전체 데이터를 차례로 보여준다.

// GetHeadPosition 함수는 맨 앞 노드의 포인터를 반환한다. 이 함수의 반환 값은 // POSITION이라는 타입의 변수로 받는데, 이것은 일종의 포인터 변수이다.

// 이 변수를 GetNex함수의 매개변수로 넘겨주면, 그 포인터가 가리키는 노드의 값 // 을 반환하고, 포인터는 다음 노드를 가리키도록 변경된다. 맨 마지막 노드에서 // GetNext 함수를 호출하면 NULL을 반환하기 때문에 while 루프를 돌면서 //GetNext 함수를 반복 호출하면 차례로 다음 노드를 참조할 수 있다.


pos = list.Find(_T(“WED”));

/* 특정 데이터를 검색하여 그 데이터가 저장된 노드의 포인터를 얻을 수 있다. /*

list.InsertAfter(pos, _T(“My BirthDay”));

/* 얻은 포인터를 매개변수로 넘겨주면서 InsertAfter 함수를 호출하면, 그 노드 바로 다음에 새로운 노드를 추가할 수 있고, InsertBefore 함수를 호출하면, 그 노드 바로 앞에 새로운 노드를 추가할 수 있다. */

for(pos = list.GetHeadPosition(); pos != NULL;)

{

data = list.GetNex(pos);

cout<<data<<endl;

}


}

p.s 요것또한 Visual c++ 6 완벽가이드 2nd 내용 중...


'programming > MFC' 카테고리의 다른 글

SendMessage & PostMessage  (0) 2011.02.23
visual 2008에서 ClassWiard 따라하기(?)  (1) 2010.12.23
MFC List 클래스  (0) 2010.12.21
MFC의 배열클래스  (0) 2010.12.21
PreTranslateMessage() 함수 사용 예제  (0) 2010.09.12
MFC 기본 윈도우 프로시져 소스  (0) 2010.09.06

+ Recent posts