Udostępnij za pośrednictwem


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

Zobacz też

Koncepcje

Kolekcje