Tworzenie kolekcji stosów i kolejek
W tym artykule wyjaśniono, jak utworzyć inne struktury danych, takich jak stosy i kolejki, z MFC lista klas.W przykładach wykorzystano pochodną klasy CList, ale można użyć CList bezpośrednio chyba że trzeba dodać funkcjonalność.
Stosy
Ponieważ kolekcja standardowej listy ma głowę i ogon, jest łatwe tworzenie kolekcji pochodne list, które symuluje działanie stosu ostatnio w first out.Stos przypomina stos zasobniki kawiarni.Zasobniki dodawanego do stosu idą na wierzchu stosu.Zasobnik Ostatni dodany jest pierwszy ma zostać usunięty.Funkcje składowe listy kolekcji AddHead i RemoveHead może służyć do dodawania i usuwania elementów w szczególności z głowicą wykazu. w efekcie ostatnio dodanych element jest pierwszy ma zostać usunięty.
Aby utworzyć kolekcję stosu
Pochodzić od klasy nowej listy jedną z istniejących klas MFC w listy i dodać więcej funkcji elementów członkowskich do obsługi funkcji operacji stosu.
Poniższy przykład pokazuje sposób dodawania funkcji elementów członkowskich do elementów na stosie okiem na górnego elementu stosu, a pop elementu najwyższego ze stosu:
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(); } };
Uwaga, że podejście to udostępnia podstawową CObList klasy.Użytkownik może wywołać dowolną CObList Członkowskich funkcjonować, czy to ma sens dla stosu lub nie.
Kolejki
Ponieważ kolekcja standardowej listy ma głowę i ogon, również jest łatwe tworzenie kolekcji list pochodne, które symuluje działanie kolejki pierwszej w first out.Kolejka jest jak linia ludzi w kawiarni.Pierwszą osobą w wierszu jest pierwszą, która ma być obsługiwana.Jak się więcej osób, przejdą do końca wiersza, aby czekać na swoją kolej.Funkcje składowe listy kolekcji AddTail i RemoveHead może służyć do dodawania i usuwania elementów w szczególności z głową lub ogonem wykazu. w efekcie najbardziej dodany element jest zawsze na końcu ma zostać usunięty.
Aby utworzyć kolekcję kolejek
Dziedziczyć po jednej z klas wstępnie zdefiniowanej listy z biblioteki Microsoft Foundation Class nową klasę listy i dodać więcej funkcji elementów członkowskich do obsługi semantyki kolejki operacji.
Poniższy przykład pokazuje, jak można dołączyć funkcje składowe, aby dodać element na koniec kolejki i uzyskać elementu z przodu kolejki.
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(); } };