2. CONTEÚDO DA AULA
Conceitos •Pilhas
•Stack-empty
•Push
•Pop
Algoritmos
Exercícios •Operações com pilhas
3. CONCEITOS
Pilhas
•Como passado na aula anterior pilha é
uma variação de deque.
• A pilha implementa a seguinte norma:
O último a entrar é o primeiro a sair,
ou LIFO (last in first out).
4. CARACTERÍSTICAS DAS PILHAS
Formas de
armazenamento
• Em vetores
• Ponteiros ( um ponteiro indica o topo da pilha )
Operações
básicas
• Verificar se lista está vazia – STACK-EMPTY(S)
• Retornar o índice do topo – TOPO(S)
• Inserir um elemento(empilhar) – PUSH(S,x)
• Remover um elemento(desempilhar) – POP(S)
Operações
inválidas
• Inserção em pilha cheia – OVERFLOW
• Remoção em pilha vazia – UNDERFLOW
5. EXEMPLO DE OPERAÇÃO EM
PILHAS
Índice da
pilha S
5
4
3
2
1
Inicial:
pilha vazia
-
-
-
-
-
PUSH(S,a)
-
-
-
-
A
PUSH(S,b)
-
-
-
B
A
POP(S)
-
-
-
-
A
PUSH(S,c)
-
-
-
C
A
POP(S)
-
-
-
-
A
POP(S)
-
-
-
-
-
POP(S)
-
-
-
-
-
A figura acima ilustra algumas operações na pilha S, utilizando os algoritmos de
empilhamento(PUSH) e desempilhamento (POP).
Observe que na última operação ocorre uma erro de UNDERFLOW, onde a pilha já se
encontra vazia e mesmo assim é dado o comando de desempilhar.
6. O ALGORITMO STACK-EMPTY(S)
• O algoritmo STACK-EMPTY(S) serve para consultar se a
lista está vazia visando evitar problemas de UNDERFLOW. Conceito
• STACK-EMPTY(S)
• If topo[S] = 0
• then return TRUE
• else return FALSE
Código
7. O ALGORITMO PUSH(S,X)
• O algoritmo PUSH(S, x) realiza o
procedimento de empilhamento, ou seja,
insere um elemento na estrutura.
Conceito
• PUSH(S,x)
• topo[S] topo[S + 1]
• S[topo[S]] x
Código
8. O ALGORITMO POP(S)
•O algoritmo POP(S) realiza o procedimento de desempilhamento, ou
seja, remove um elemento na estrutura. Conceito
•POP(S)
• if STACK-EMPTY(S)
• then error “underflow”
• else topo[S] topo[S - 1]
• return S[topo[S] + 1
Código
9. EXERCÍCIO
Utilizando o modelo de pilha do exemplo passado, ilustre o resultado
de cada operação na sequência PUSH(S,4), PUSH(S,1), PUSH(S,3),
POP(S), PUSH(S,8), POP(S) sobre uma pilha S inicialmente vazia
armazenada num arranjo[1 .. 5].