스택 및 대기열 컬렉션 만들기
같은 다른 데이터 구조를 만드는 방법을 설명 스택 및 대기열, MFC에서 클래스를 나열 합니다.예제에서 파생 된 클래스를 사용 CList를 사용할 수 있습니다 CList 직접 기능을 추가 하 고 필요 하지 않은.
스택
표준 목록 컬렉션에는 머리와 꼬리가 모두 있으므로 마지막에-선입 선출 스택의 동작을 모방 하는 파생 된 목록 컬렉션을 만들기 쉽습니다.스택 스택 용지함에는 카페테리아와 비슷합니다.트레이 스택에 추가 되 면 스택 맨 이동 하십시오.마지막 추가 용지함 제거할 첫 번째입니다.목록 컬렉션 멤버 함수 AddHead 및 RemoveHead 추가 목록; 특히 머리에서 요소를 제거 하는 데 사용 따라서 최근에 추가한 요소를 제거 하려면 첫 번째입니다.
스택 컬렉션을 만들려면
기존의 MFC 목록 클래스 중 하나에서 새 목록 클래스를 파생 하 고 스택 연산의 기능을 지원 하기 위한 다른 멤버 함수를 추가 합니다.
다음 예제에서는 요소 스택에, 스택의 맨 위 요소를 엿 본 밀고 스택에서 맨 위에 있는 요소를 팝 하는 멤버 함수를 추가 하는 방법을 보여 줍니다.
class CTray : public CObject { }; class CStack : public CTypedPtrList< CObList, CTray* > { public: // Add element to top of stack void Push( CTray* newTray ) { AddHead( newTray ); } // Peek at top element of stack CTray* Peek() { return IsEmpty() ? NULL : GetHead(); } // Pop top element off stack CTray* Pop() { return RemoveHead(); } };
참고가이 방법은 기본 노출 하도록 CObList 클래스입니다.모든 사용자를 호출할 수 있습니다 CObList 멤버 함수는 스택 적합 한지에 관계.
큐
표준 목록 컬렉션에는 머리와 꼬리가 모두 있으므로 쉽게 선입 선출 큐의 동작을 모방 하는 파생 된 목록 컬렉션을 만들 수 있습니다.큐 일행은 카페테리아 줄와 비슷합니다.첫 번째 줄에 제공 되는 첫 번째입니다.더 많은 사람들이 자신의 차례를 기다려 줄의 끝으로 이동 하십시오.목록 컬렉션 멤버 함수 AddTail 및 RemoveHead 추가 하 고 특히 머리 또는 꼬리 목록의 요소를 제거 하는 데 사용할 수 있습니다 따라서 가장 최근에 요소는 항상 마지막으로 제거할 수 있는 추가 합니다.
대기열 컬렉션을 만들려면
Mfc 라이브러리를 제공 하는 미리 정의 된 목록 클래스 중 하나에서 새 목록 클래스를 파생 하 고 큐 작업의 의미 체계를 지원 하기 위한 다른 멤버 함수를 추가 합니다.
다음 예제에서는 어떻게 큐의 끝에 요소를 추가 하 고 큐의 앞에서 요소를 가져오고 멤버 함수를 추가할 수 있습니다 보여 줍니다.
class CQueue : public CTypedPtrList< CObList, CPerson* > { public: // Go to the end of the line void AddToEnd( CPerson* newPerson ) { AddTail( newPerson ); } // End of the queue // Get first element in line CPerson* GetFromFront() { return IsEmpty() ? NULL : RemoveHead(); } };