Partilhar via


Criando coleções de pilhas e filas

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

Pilhas

Porque a coleção padrão da lista tem um início e uma parte final, é fácil criar uma coleção derivado da lista que imite o comportamento de uma último-em- primeira em expansão pilha. Uma pilha é como uma pilha de bandejas em um pub. Como as bandejas são adicionadas à pilha, não na pilha. A superfície da última adicionada é a primeira a ser removida. As funções de membro AddHead e RemoveHead da coleção da lista podem ser usadas para adicionar e remover especificamente os elementos do início da lista; assim, o elemento é adicionado recentemente o primeiro a ser removido.

Para criar uma coleção de pilha

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

    O exemplo a seguir mostra como adicionar sobre funções de membro para elementos de envio para a pilha, espreitá-las no elemento superior da pilha, e exibida o 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 esta abordagem expõe a classe subjacente de CObList . O usuário pode chamar qualquer função de membro de CObList , se faz sentido para uma pilha ou não.

Filas

Porque a coleção padrão da lista tem um início e uma parte final, também é fácil criar uma coleção derivado da lista que imite o comportamento de uma uma primeira em expansão fila. Uma fila é como uma linha de pessoas em um pub. A pessoa na primeira linha é a primeira a ser atendida. à medida que mais pessoas vêm, vá até o final da linha aguarda a sua volta. As funções de membro AddTail e RemoveHead da coleção da lista podem ser usadas para adicionar e remover especificamente os elementos de início ou do final da lista; assim, o elemento é adicionado recentemente sempre o último a ser removido.

Para criar uma coleção de fila

  • Derivar uma nova classe da lista de uma das classes predefinidas da lista fornecidas com a biblioteca de classes do Microsoft e adicionar mais funções de membro para dar suporte a 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 para obter o elemento da 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