3. INTRODUÇÃO
É uma lista linear.
É uma lista LIFO – last in / first out – último que entra
primeiro que sai.
É uma lista dinâmica: pode aumentar ou diminuir durante a
sua existência.
Operações de inserção e remoção são realizadas na mesma
extremidade.
07/12/2016
3
TOPO
BASE
5. Operações
Top: retorna o elemento que
está no topo da pilha. Não altera
o estado da Pilha.
Push: insere um novo elemento
no topo da pilha. Altera o estado
da Pilha.
Pop: remove um elemento do
topo da pilha. Altera o estado da
Pilha.07/12/2016
5
Xn
...
X6
X5
X4
X3
X2
X1
PUSH (P, x) POP (P, x)
PILHA (P)
Topo
Base
6. Operações
Init: inicializa a pilha no estado vazia
(NIL ou NULL). Define um estado
inicial.
IsEmpty: verifica se a pilha está
vazia. Do tipo booleano: retorna
TRUE somente se estiver vazia.
IsFull: verifica se a pilha está cheia.
Do tipo booleano: retorna TRUE
somente quando não há mais
espaço de armazenamento07/12/2016
6
Xn
...
X6
X5
X4
X3
X2
X1
PUSH (P, x) POP (P, x)
PILHA (P)
Topo
Base
14. Implementação: PUSH
procedure Empilha(var p: tipo_pilha; x: tipo_dado);
var
aux : tipo_pilha;
Begin
new(aux);
aux^.dado := x;
aux^.prox := p;
p := aux;
end;07/12/2016
14
15. Implementação: POP
function Desempilha(var p: tipo_pilha; var x : tipo_dado):boolean;
var
aux:tipo_pilha;
begin
if Vazia(p) Then
Desempilha := false
else
begin
Desempilha := True;
x := p^.dado;
aux := p;
p := p^.prox;
dispose(aux);
end;
end;
07/12/2016
15
17. Implementação: Impressão da Pilha
procedure imprimir();
begin
if Vazia(p) Then
writeln('Pilha Vazia')
else
begin
writeln(' IMPRIMINDO TODO O CONTEÚDO DA PILHA ');
aux:=p;
while(aux <> nil)do //imprimindo lista
begin
write(' dado : ');
writeln(aux^.dado);
aux := aux^.prox;
end; //while
end; //if
end;
07/12/2016
17
19. Referências
1. Deitel, H. M.; Deitel, P. J. Java: Como Programar. Tradução: Edson
Furmankiewicz; Revisão Técnica: Fábio Luis Picelli Lucchini. 6.ª Edição. São Paulo:
Pearson Prentice Hall, 2005. Cap. 17, p. 607 – 644.
2. Deitel, H. M.; Deitel, P. J. C: Como Programar. Tradução: Daniel Vieira; Revisão
Técnica: César Caetano. 6.ª Edição. São Paulo: Pearson Prentice Hall, 2011. Cap. 12,
p. 379 – 413.
3. Deitel, H. M.; Deitel, P. J. C++: Como Programar. Tradução: Edson
Furmankiewicz; Revisão Técnica: Fábio Luis Picelli Lucchini. 5.ª Edição. São Paulo:
Pearson Prentice Hall, 2006. Cap. 21, p. 789 – 845.
4. Schildt, H.; Skrien, D. Programação com Java: Uma Introdução Abrangente.
Tradução: Aldir José Coelho Cêrrea da Silva. Revisão Técnica: Maria Lúcia Blanck
Lisbôa. Porto Alegre: AMGH, 2013. Cap. 25, p. 911 – 966
07/12/2016
19
20. Referências
5. Ziviani, N. Projeto de Algoritmos com Implementações em Pascal e C.
3.ª ed. rev. e amp. São Paulo: Cengage Learning, 2015. Cap. 3, p. 69 – 100.
6. Forouzan, B., Mosharraf, F. Fundamentos da Ciência da Computação.
Tradução: Solange Aparecida Visconti. Revisão Técnica: Ronaldo A. L.
Gonçalves. São Paulo: Cengage Learning, 2011. Cap. 11, p. 257 – 278.
7. Pereira, S. L. Estruturas de Dados Fundamentais: Conceitos e
Aplicações. São Paulo: Érica, 1996.
8. Ascencio, A. F. G.; Araújo, G. S. Estruturas de Dados: Algoritmos,
Análise da Complexidade e Implementações em Java e C/C++. São Paulo:
Pearson Prentice Hall, 2010. Cap. 4, p.183 – 200.
07/12/2016
20