Академический Документы
Профессиональный Документы
Культура Документы
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
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