Vytváření kolekce fronty a zásobníku
Tento článek vysvětluje, jak vytvořit datových struktur, jako například hromádky a fronty, z MFC seznam tříd.Příklady použití třídy odvozené z CList, ale můžete použít CList přímo Pokud potřebujete přidat funkce.
Zásobníky
Protože kolekce standardní seznam head a ocas, je snadné vytvořit seznam odvozené kolekci, která napodobuje chování zásobníku poslední in-first-out.Pořadí překrývání je jako zásobník misek, kafetérie v textilní továrně.Jako zásobníky jsou přidány do zásobníku, přejděte v horní části zásobníku.Poslední zásobník přidán je první odebrat.Funkce seznamu kolekce členů AddHead a RemoveHead slouží k přidání a odebrání prvků konkrétně z hlavy seznamu; nedávno přidaný prvek tedy nejprve odebrat.
Vytvoření kolekce zásobníku
Odvození nové třídy seznamu z jednoho z existující seznam tříd MFC a přidat další funkce členů pro podporu funkce zásobníku operací.
Následující příklad ukazuje, jak přidat funkce členů prvky do zásobníku náhled na začátek prvku v zásobníku push a pop prvek ze zásobníku:
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(); } };
Poznámka, že tento přístup poskytuje základní CObList třídy.Uživatel může volat všechny CObList členské funkce, zda má smysl pro zásobníku nebo není.
Fronty
Protože kolekce standardní seznam head a ocas, je také snadné vytvářet odvozené seznamu kolekce, která napodobuje chování fronty první v first-out.Fronta je jako řádek lidí v kafetérie v textilní továrně.První osoba v řádku je první odsouzené.Jako další lidé pocházejí, přejít na konec řádku jejich vypnout čekání.Funkce seznamu kolekce členů AddTail a RemoveHead slouží k přidání a odebrání prvků konkrétně z hlavy nebo ocasu seznamu; tedy nejvíce nedávno přidané prvek je vždy poslední odebrat.
Vytvoření kolekce fronty
Odvození nové třídy seznamu z jednoho seznamu předdefinovaných tříd s knihovny Microsoft Foundation Class a přidat další funkce členů podporovat sémantiku operace fronty.
Následující příklad ukazuje, jak lze přidat funkce členů přidat prvek na konec fronty a získat prvek z přední fronty.
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(); } };