Sdílet prostřednictvím


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(); }
    }; 
    

Viz také

Koncepty

Kolekce