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