Compartilhar via


Criação de pilha e coleções da fila

Este artigo explica como criar outras estruturas de dados, como pilhas e filas de, lista de classes do MFC.Os exemplos usam classes derivadas de CList, mas você pode usar CList diretamente, a menos que você precise adicionar funcionalidade.

Pilhas

Como a coleção de lista padrão tem uma cabeça e um laço, é fácil criar uma coleção de lista derivado que imita o comportamento de uma pilha de último-in-first-out.Uma pilha é como uma pilha de bandejas em uma lanchonete.Como as bandejas são adicionadas à pilha, eles ir no topo da pilha.A bandeja última adicionada é o primeiro a ser removido.As funções de membro de coleção lista AddHead e RemoveHead pode ser usado para adicionar e remover elementos especificamente do cabeçalho da lista; Assim, o elemento mais recentemente adicionado é o primeiro a ser removido.

Para criar uma coleção de pilha

  • Derivar uma nova classe de lista de uma das classes de lista MFC existentes e adicionar mais funções de membro para oferecer suporte à funcionalidade de operações de pilha.

    O exemplo a seguir mostra como adicionar funções de membro para envio elementos na pilha, espiada no elemento superior da pilha e pop do elemento superior da pilha:

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

Observe que essa abordagem expõe a base CObList classe.O usuário pode chamar qualquer CObList função de membro, se faz sentido para uma pilha ou não.

Filas

Como a coleção de lista padrão tem uma cabeça e um laço, também é fácil criar uma coleção de lista derivado que imita o comportamento de uma fila first in first out.Uma fila é como uma linha de pessoas em uma lanchonete.A primeira pessoa na linha é o primeiro a ser atendido.Conforme mais pessoas vêm, vão para o final da linha para aguardar sua vez.As funções de membro de coleção lista AddTail e RemoveHead pode ser usado para adicionar e remover elementos especificamente do cabeçalho ou cauda da lista; Assim, mais recentemente adicionado elemento sempre é a última a ser removido.

Para criar uma coleção de fila

  • Derivar uma nova classe de lista de uma das classes de lista predefinidos fornecidas com a biblioteca Microsoft Foundation Class e adicionar mais funções de membro para oferecer suporte à semântica de operações de fila.

    O exemplo a seguir mostra como você pode acrescentar funções de membro para adicionar um elemento ao final da fila e obter o elemento na frente da fila.

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

Consulte também

Conceitos

Coleções