Compartilhar via


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

Este artigo explica sistema autônomo criar outras estruturas de dados, sistema autônomo pilhas and filas, de classes do MFC lista.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 listagem padrão tem um cabeçalho e uma cauda, é fácil criar uma coleção de lista derivado que imita o comportamento de uma pilha de última-in-first-out.Uma pilha é como uma pilha de bandejas em uma lanchonete.À medida que sistema autônomo bandejas são adicionadas à pilha, eles estão no topo da pilha.Bandeja do última adicionada é o primeiro a ser removido.O membro da coleção lista funções AddHead e RemoveHead pode ser usado para adicionar e remover elementos especificamente de cabeça da lista; portanto, o elemento adicionado mais recentemente é a primeira a ser removido.

Para criar uma coleção de pilha

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

    O exemplo a seguir mostra como adicionar funções de membro para colocar elementos para a 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 o subjacente CObList classe. O usuário pode telefonar qualquer CObList membro funcionar se faz sentido para uma pilha ou não.

Filas

Como a coleção de listagem padrão tem uma ponta 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 sejam atendidos.À medida que mais pessoas passam, eles ir para o participante da linha para esperar sua vez.O membro da coleção lista funções AddTail e RemoveHead pode ser usado para adicionar e remover elementos especificamente de cabeçalho ou parte final da lista; portanto, o elemento adicionado mais recentemente é sempre a última a ser removido.

Para criar uma coleção de fila

  • Derive 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, adicione um elemento no participante da fila e obter o elemento do início 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