Professional Documents
Culture Documents
Pilhas
Uma
pilha
uma
coleo
de
objetos
que
so
inseridos
e
re-rados
de
acordo
com
o
princpio
que
o
l(mo
que
entra
o
primeiro
que
sai
(LIFO)
Pode-se
inserir
um
objeto
a
qualquer
momento,
mas
somente
o
objeto
inserido
recentemente
pode
ser
removido
a
qualquer
momento
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
1 15
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
Insero
na
pilha
P
P
6
5
4
3
2
9
2
6
1 15
A
insero
em
uma
pilha
feita
atravs
de
uma
operao
chamada
PUSH
P
=
(15,
6,
2,
9)
top[P]
=
4
Vamos
ver
como
ca
a
pilha
aps
duas
operaes
de
insero:
PUSH(P,
17)
PUSH(P,
3)
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
1 15
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
1 15
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
1 15
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
POP
A
pilha
no
pode
estar
vazia
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
10
11
S[t] o
12
Problema
Implementao
baseada
em
arranjo
simples
e
eciente
Qual
o
aspecto
nega-vo?
Qual
seria
uma
soluo
aceitvel?
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
13
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
14
15
16
FILAS
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
17
Filas
Coleo
de
objetos
que
so
inseridos
e
removidos
de
acordo
com
o
princpio
de
que
o
primeiro
que
entra
o
primeiro
que
sai
(FIFO)
Pode-se
inserir
os
elementos
em
qualquer
momento,
mas
somente
o
elemento
que
est
na
la
a
mais
tempo
pode
ser
re-rado
em
um
dado
momento
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
18
19
Filas
-
Exemplo
1
2
3
4
5
6
7
15
8
6
9
8
10
9
11
4
m[F]
=
12
12
inicio[F] = 7
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
20
F
m[F]
=
1
inicio[F] = 7
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
21
3 m[F] = 2
inicio[F] = 7
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
22
inicio[F] = 7
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
23
inicio[F] = 8
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
24
25
26
27
28
29
AXvidades
Complementares
Solucionar
os
exerccios
propostos
nos
prximos
slides
Desao:
O
Problema
de
Josephus
Leitura
do
captulo
10
do
Cormen
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
30
31
Exerccios
de
Pilha
1.
Ilustre
o
resultado
de
cada
operao
na
sequncia:
PUSH(P,
4),
PUSH(P,
3),
POP(P),
PUSH(P,
8)
e
POP(P)
sobre
uma
pilha
P
inicialmente
vazia
armazenada
em
um
vetor
P [1..6]
2.
Para
a
mesma
pilha
vazia,
ilustre
as
seguintes
sequncias:
PUSH(P,
3),
POP(P),
POP(P),
PUSH(P,
4)
PUSH(P,
1),
POP(P),
PUSH(P,
1),
PUSH(P,
1),
PUSH (P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1)
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
32
Exerccios
de
Pilha
3.
Implemente
uma
pilha
na
linguagem
de
programao
de
sua
preferncia
e
rodem
as
seguintes
conguraes
de
pilhas:
Ilustre
o
resultado
de
cada
operao
na
sequncia:
PUSH(P,
4),
PUSH(P,
3),
POP(P),
PUSH(S,
8)
e
POP(P)
sobre
uma
pilha
P
inicialmente
vazia
armazenada
em
um
vetor
P[1..6]
Para
a
mesma
pilha
vazia,
ilustre
as
seguintes
sequncias:
PUSH(P,
3),
POP(P),
POP(P),
PUSH(P,
4)
PUSH(P,
1),
POP(P),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1),
PUSH(P,
1)
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
33
Exerccios
de
Pilha
4.
Adicione
uma
restrio
para
que
a
pilha
seja
criada
com
uma
capacidade
mxima
(em
seu
tamanho).
Mostre
os
algoritmos
e
a
implementao
modicada.
5.
Especique
e
implemente
operaes
para:
Retornar
o
nmero
de
objetos
na
pilha
Retornar
o
objeto
no
topo
da
pilha,
sem
remov- lo
(deve
retornar
um
erro
caso
a
pilha
esteja
vazia)
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
34
Exerccios
6.
Seja
a
funo
esvazie(
)
tal
que,
recebendo
uma
pilha
como
entrada,
esvazie
a
pilha
descartando
todos
os
seus
elementos.
Escreva
a
funo
esvazie(
)
7.
Escreva
um
programa
que
verique
que
expresses
aritm-cas
esto
com
os
parnteses
colocados
de
forma
correta.
Guarde
o
resultado
numa
pilha
tambm.
Seu
programa
deve
checar
expresses
para
ver
se
cada
"abre
parnteses"
tem
um
"fecha
parnteses"
correspondente.
8.
Uma
palavra
uma
palndrome
se
a
seqncia
de
letras
que
a
forma
a
mesma
seja
ela
lida
da
esquerda
para
a
direita
ou
vice-versa.
Exemplos:
arara,
rairar,
hanah.
Escreva
a
funo
palndrome
que,
dada
uma
palavra,
retorne
true
caso
a
palavra
seja
uma
palndrome,
e
false
caso
contrrio.
Use
uma
pilha
para
tal.
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
35
Exerccio
9.
Implementar
um
algoritmo
para
o
problema
das
torres
de
hanoi
Resumidamente,
as
regras
so:
Movimentar
uma
s
pea
de
cada
vez
Uma
pea
maior
no
pode
car
acima
de
uma
menor
No
permi-do
movimentar
uma
pea
que
esteja
abaixo
de
outra
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
36
Exerccios
de
Filas
1.
Descreva
a
sada
da
seguinte
sequncia
de
operaes
sobre
uma
la:
ENQUEUE(5),
ENQUEUE(3),
DEQUEUE()
,
ENQUEUE(2),
ENQUEUE(8),
DEQUEUE()
,
DEQUEUE()
ENQUEUE(9),
ENQUEUE(1),
DEQUEUE(),
ENQUEUE(7),
ENQUEUE(6),
DEQUEUE()
DEQUEUE(),
ENQUEUE(4),
DEQUEUE()
DEQUEUE()
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
37
Exerccios
de
Filas
2.
Implemente
uma
la
na
linguagem
de
programao
de
sua
preferncia
e
rodem
as
seguintes
conguraes:
Ilustre
o
resultado
de
cada
operao
na
sequncia
do
exerccio
anterior
3.
Modique
os
algoritmos
de
forma
que
eles
detectem
problemas
de
estouro
na
la
(la
sem
espao
para
serem
inseridos
novos
elementos)
e
problemas
de
tenta-vas
de
remoo
em
las
vazias
Algoritmos
e
Estrutura
de
Dados
Estrutura
de
Dados:
Pilhas
e
Filas
2011
Vinicius
Cardoso
Garcia
38
Exerccios
de
Filas
4.
Modique
os
algoritmos
de
la
de
forma
que
os
elementos
sejam
movimentados
para
a
frente
da
la
quando
o
elemento
do
incio
for
removido
(a
la
anda
quando
um
el.
desenleirado)
Algoritmos e Estrutura de Dados Estrutura de Dados: Pilhas e Filas 2011 Vinicius Cardoso Garcia
39