Você está na página 1de 12

Estrutura de Dados I

Pilha

Prof. Eder Stone Fontoura Revisado por Prof Aline Riva

Pilha
Definio: uma Lista linear (Simples) onde as operaes de insero, excluso e consulta so feitas em um mesmo extremo da lista (TOPO).
PUSH POP TOPO

Pilha
Notao
Topo da pilha: elemento ao qual se tem acesso imediato. Empilhar: colocar um elemento no topo da pilha. Desempilhar: retirar o elemento do topo da pilha.

Representao:
topo an an-1 ... b1 base a1

Pilha
As operaes sobre Pilha seguem um critrio:
Critrio - LIFO - "LAST IN FIRST OUT" (ltimo a entrar o primeiro a sair)
Insero de um elemento torna-o o ltimo da pilha. O elemento retirado sempre o ltimo da pilha (topo).

Pilha
Operaes
Top: acessa o elemento do topo da pilha.
Referncia da Pilha

e = top(p) Push: insere um novo elemento no topo da pilha.


Novo Elemento Elemento

push(p, x)
Pilha

Pop: remove um elemento do topo da pilha.


Pilha

e = pop(p)
Elemento Removido

Pilha
Exemplos:
push(p,a)
topo a

push(p,c)
topo

c b a

push(p, b)
topo b a

pop(p)
topo b a

Pilha
Os estados de uma pilha ao longo do tempo

Pilha
Operaes:
Teoricamente, no existe um limite superior para o nmero de elementos na pilha.
seria possvel a incluso infinita de novos elementos em uma pilha.

Pilha
Operaes:
No entanto, existe obrigatoriamente o limite inferior (pilha vazia)
se uma pilha p com somente um elemento objeto de uma operao pop(p), a pilha resultante uma pilha vazia.

E se aplicarmos uma nova operao (pop(p) ou top(p)) sobre esta pilha vazia?
A aplicao de uma destas 2 operaes a uma pilha vazia, ocorre um erro conhecido como underflow .

Pilha
Operaes:
empty(p) operao que retorna um valor booleano para indicar se a pilha est vazia.
TRUE (1) Quando a pilha est vazia FALSE (0) Quando a pilha possui elementos

Pilha
Aplicao prtica:
Controle de chamadas de funes recursivas

Exerccio
Criar um validador de escopos de expresses matemticas usando uma pilha.
O programa deve receber como entrada uma expresso matemtica do tipo
(a * b) + (b * c) {[(a * b) + (b * c)] (a * c)} * j

O programa dever validar se os escopos esto corretamente delimitados


se para cada ( ou [ ou { existe um ) ou ] ou } na ordem correta.

Você também pode gostar