Udostępnij za pośrednictwem


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

Zobacz też

Koncepcje

Kolekcje