Estruta
Uma pilha é uma coleção ordenada de itens na qual os itens podem ser inseridos e retirados a partir da última posição, chamada topo da pilha. A Figura 1 representa uma estrutura do tipo pilha.
A definição de um TAD Pilha indica que apenas três operações podem ser realizadas: empilhamento, desempilhamento e uma eventual verificação do elemento que está no topo da pilha. A representação anterior ilustra uma pilha cujo conteúdo do topo é o elemento E. Neste caso, quando um elemento é inserido, ele é inserido “sobre” E. A remoção de um elemento na pilha anterior eliminaria o elemento E da pilha.
Implementação de Pilha
Pode-se criar um TAD pilha utilizando a representação em array. A seguir é descrita a implementação de uma pilha. A definição de uma estrutura para pilha necessita de apenas dois membros, um campo chamado topo e um campo onde as informações são armazenadas representado por um array chamado dado. O campo topo é do tipo inteiro e representa o índice do topo na array.
Estrutura Pilha{ int topo = -1; int dado[];
} p;
Inicialmente o índice topo é inicializado com –1. Isto indica que a pilha está vazia. Desta forma pode-se implementar um teste para verificar se a pilha está vazia (teste de underflow) da seguinte forma:
Se (topo == -1) então retorne pilha vazia senão retorne pilha não vazia
A operação de inserção (empilhamento) pode ser facilmente implementada da seguinte forma:
empilha(p, 10) // Empilha o elemento 10 na pilha p Se p não está cheia então topo = topo +1;
p.dado[topo] = 10 senão “Informe Pilha Cheia.”
É importante verificar a relização do teste de “overflow” antes de efetivamente inserir o elemento na pilha. Este teste pode ser implementado da seguinte forma:
Se p.topo == tamanho de p.dado – 1 então
Retorne “pilha cheia”
Senão
Retorne “Pilha não Cheia”
A operação de remoção (desempilhamento) de um elemento também é muito simples:
desempilha(p) // Desempilha o elemento da