Tworzenie stosu i kolekcji kolejek
W tym artykule opisano sposób tworzenia innych struktur danych, takich jak stosy i kolejki, z MFC lista klas.W przykładach użyto klasy pochodzące od CList, ale można użyć CList bezpośrednio chyba, że trzeba dodać funkcjonalność.
Stosy
Ponieważ kolekcja standardowa lista ma głowę i ogon, jest łatwe tworzenie kolekcji listy pochodnych naśladujące zachowanie stosu last w pierwszej out.Stos przypomina stos zasobniki w kawiarnia.Zasobniki po dodaniu do stosu, przejdź na górze stosu.Ostatni zasobnik dodawane jest pierwszym do usunięcia.Funkcje składowe listy kolekcji AddHead i RemoveHead może służyć do dodawania i usuwania elementów od szefa listy; zatem ostatnio dodanego elementu jest najpierw należy usunąć.
Aby utworzyć kolekcję stosu
Dziedziczyć nową klasę listy jedną z istniejących lista klas MFC i dodać więcej funkcji obsługi funkcji operacji stosu.
Poniższy przykład przedstawia sposób dodawania funkcji elementów członkowskich do elementów na stosie, rzut oka na najwyższego elementu stosu, jak i pop najwyższego elementu 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 działa, czy ma sens dla stosu lub nie.
Kolejki
Ponieważ kolekcja standardowa lista ma głowę i ogon, również jest łatwo utworzyć kolekcję pochodnych listy naśladujące zachowanie kolejki pierwszej w pierwszej out.Kolejka jest jak linia ludzi w kawiarnia.Pierwsza osoba w wierszu jest pierwszym ma być obsługiwana.Jak pochodzą więcej osób, przejdź do końca linii kolei oczekiwania.Funkcje składowe listy kolekcji AddTail i RemoveHead może służyć do dodawania i usuwania elementów specjalnie z głowy lub ogona listy; w ten sposób najbardziej dodany element jest zawsze ostatnią do usunięcia.
Aby utworzyć kolekcję kolejek
Pochodzić nowej klasy listy z jednej z klas wstępnie zdefiniowaną listę z biblioteki Microsoft Foundation klasy i dodać więcej funkcji obsługi Semantyka kolejki operacji.
Poniższy przykład pokazuje, jak można dołączyć funkcje składowe, aby dodać element na koniec kolejki i element 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(); } };