Вы находитесь на странице: 1из 38

Pilhas

Prof. Dr. Rodrigo Plotze

rodrigoplotze@gmail.com
Roteiro
Pilha
Fila
Deque
Atividade Prtica
Bibliografia

2
Unidade 01

PILHAS

3
Pilhas
Definio
Uma pilha um conjunto de elementos no qual a
insero e remoo sempre ocorre em uma
extremidade denominada topo da pilha.
Assim,
Novos elementos podem ser colocados no topo da pilha,
provocando um deslocamento do topo para cima.
Ou ento, elementos podem ser retirados do topo da
pilha, provando um deslocamento para baixo.

4
Pilhas
Representao grfica

topo

base

5
Pilhas
Operaes Bsicas
As operaes primitivas de uma pilha recebem
nomes especiais.
Quando um elemento includo na pilha, ele
empilhado sobre a pilha e, quando um elemento
removido, ele desempilhado.
Push(P,x) = empilhar
Insere o elemento x no topo da pilha P
Pop(P) = desempilhar
Remove o elemento do topo da pilha P, e retorna esse
elemento;

6
Pilhas
Operaes Bsicas
Alm disso, outras operaes podem ser
implementadas na pilha:
Pilha Cheia (para pilhas estticas)
Pilha Vazia
Exibir Elemento do Topo
Imprimir Pilha
Esvaziar Pilha

7
Pilhas
Funcionamento
Nas pilhas as operaes de insero/remoo so
realizadas na ordem:
First In Last Out FILO
Last in First Out - LIFO

8
Funcionamento de uma Pilha
Estado inicial

F
E
D
C
B
A
P 9
Funcionamento de uma Pilha
Operao: Push(P,G)

G
F F
E E
D D
C C
B B
A A
P P 10
Funcionamento de uma Pilha
Operao: Push(P,H)

H
G G
F F F
E E E
D D D
C C C
B B B
A A A
P P P 11
Funcionamento de uma Pilha
Operao: Push(P,I)

I
H H
G G G
F F F F
E E E E
D D D D
C C C C
B B B B
A A A A
P P P P 12
Funcionamento de uma Pilha
Operao: Pop(P);

I
H H H
G G G G
F F F F F
E E E E E
D D D D D
C C C C C
B B B B B
A A A A A
P P P P P 13
Funcionamento de uma Pilha
Operao: Pop(P);

I
H H H
G G G G G
F F F F F F
E E E E E E
D D D D D D
C C C C C C
B B B B B B
A A A A A A
P P P P P P
14
Funcionamento de uma Pilha
Operao: Pop(P);

I
H H H
G G G G G
F F F F F F F
E E E E E E E
D D D D D D D
C C C C C C C
B B B B B B B
A A A A A A A
P P P P P P P
15
Funcionamento de uma Pilha
Operao: Push(P,J);

I
H H H
G G G G G J
F F F F F F F F
E E E E E E E E
D D D D D D D D
C C C C C C C C
B B B B B B B B
A A A A A A A A
P P P P P P P P
16
Pilhas
Implementao: Esttica
Codificao simples
Insero e remoes no fim
Varivel mantm o controle da
posio topo, e topo ser utilizada
tambm para informar o nmero
de elementos na pilha.
0 1 2 3 4 5 6 7 8 9

12 25 40 16 28 60 19
topo

17
Pilhas
Implementao: Esttica

18
Pilhas
Implementao: Dinmica
O topo pode ser o incio da lista
A implementao se torna mais eficiente, pois no h
necessidade de percorrer a lista;
As operaes podem ser implementadas utilizando
uma lista simplesmente encadeada
Topo

25

19
Pilhas
Implementao: Dinmica
O topo pode ser o incio da lista
A implementao se torna mais eficiente, pois no h
necessidade de percorrer a lista;
As operaes podem ser implementadas utilizando
uma lista simplesmente encadeada
Topo

12 25

20
Pilhas
Implementao: Dinmica
O topo pode ser o incio da lista
A implementao se torna mais eficiente, pois no h
necessidade de percorrer a lista;
As operaes podem ser implementadas utilizando
uma lista simplesmente encadeada
Topo

32 12 25

21
Pilhas
Implementao: Dinmica

22
Pilhas
Aplicaes
Anlise de Expresses Matemticas
Avaliar o agrupamento de parnteses e chaves
Anlise sinttica de cdigo fonte
Converso infixa para posfixa

23
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }

Pilha vazia
24
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)

{ topo
25
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()

( topo
{
26
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)

[ topo
(
{
27
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()

( topo
{
28
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop()

{ topo
29
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop()
Push([)
[ topo

{
30
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop() ( topo
Push([)
Push(() [
{
31
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop()
Push([)
Push(() [ topo
Pop()
{
32
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop()
Push([)
Push(()
Pop()
Pop() { topo
33
Aplicaes
Exemplo:
Considere a seguinte expresso matemtica
{x+(y-[a+b])*c-[(d+e)] }
Push({)
Push(()
Push([)
Pop()
Pop()
Push([)
Push(()
Pop()
Pop() Pilha vazia
Pop() 34
Unidade 01

ATIVIDADE PRTICA

35
Atividade Prtica

Implemente uma Pilha Dinmica contendo as


operaes de:
Push
Pop
PilhaVazia
ExibirTodos

36
Unidade 01

BIBLIOGRAFIA

37
Bibliografia
DROZDEK, A. Estruturas de Dados e Algoritmos em
C++. So Paulo: Pioneira Thonsom Learning, 2002.
ASCENCIO, A.F.G.; ARAJO, G. S. de. Estrutura de
Dados. So Paulo: Pearson, 2010.

38