Uma pilha é uma estrutura de dados que armazena itens de forma ordenada de modo que o último item inserido é o primeiro a ser removido (princípio FILO). Itens podem ser adicionados ou removidos de apenas uma extremidade da pilha, conhecida como topo. Pilhas podem ser implementadas usando arrays ou listas.
1. PilhasPilhas
Uma pilha é um conjunto ordenado de itens no
qual novos itens podem ser inseridos e a partir
do qual podem ser eliminados itens em uma
extremidade chamada topo da pilha.
2. PilhasPilhas
• Podem ser implementadas por meio de arranjos
(vetores) ou listas
• Topo corresponde ao último elemento do conjunto
• O último elemento que entra na pilha (lista) é o
primeiro elemento que sai
• O primeiro elemento que entra na pilha (lista) é o
último que sai.
o FILO – First in Last out
o UEPS – último elemento que entra, primeiro que sai.
5. Algoritmo Pilha - principalAlgoritmo Pilha - principal
Algoritmo Pilha
var
Tipo pilha_reg = registro
topo: inteiro
elemento: vetor[1..50] de inteiros
fim
pilha: pilha_reg
inicio
pilha.topo ← -1
6. AlgoritmoAlgoritmo Pilha – funções cheia e vaziaPilha – funções cheia e vazia
Função vazia( ): lógica
início
Se (pilha.topo = -1) então
retorne .v.
Senão
retorne .f.
fim-se
fim
Função cheia( ): lógica
início
Se (pilha.topo = 50) então
retorne .v.
Senão
retorne .f.
fim-se
fim
7. Algoritmo Pilha – Procedimento empilharAlgoritmo Pilha – Procedimento empilhar
Procedimento empilhar(elem: inteiro)
início
Se (cheia( ) = .f.) então
elemento.topo ← elem
pilha.topo ← pilha.topo + 1
Senão
Mostre(“Pilha Cheia!”)
fim-se
fim
8. Algoritmo Pilha – FunçãoAlgoritmo Pilha – Função
desemplilhardesemplilhar
Função desempilhar( ): literal
var
valorDesempilhado:literal
início
Se (vazia ( ) = .f.) então
valorDesempilhado ← “Pilha Vazia”
Senão
valorDesempilhado ← pilha.vetor[topo]
pilha.topo ← pilha.topo - 1
Fim-se
retorne(valorDesempilhado)
Fim
9. Algoritmo Pilha – Procedimento exibePilhaAlgoritmo Pilha – Procedimento exibePilha
Procedimento exibePilha( )
var
i:inteiro
início
Se vazia() = .v. então
Mostre(“Pilha vazia”)
Senão
Para(i ← 0 até topo) faça
Mostre(“Elemento ”, elemento[i], “ posição ”, i)
Fim-para
Fim-se
fim
fim. // fim do algoritmo principal
10. Implementação da classeImplementação da classe
class Pilha {
int tamanho;
int topo;
Object vetor[];
Pilha(int tam) {
topo = -1;
tamanho = tam;
vetor = new Object[tam];
}
11. Métodos vazia e cheiaMétodos vazia e cheia
public boolean vazia (){
if (topo == -1)
return true;
else
return false;
}
public boolean cheia (){
if (topo == tamanho -1)
return true;
else
return false;
}
14. Método exibePilhaMétodo exibePilha
public void exibePilha(){
if (vazia() == true)
System.out.println("Pilha Vazia");
else{
for(int i = topo; i >= 0; i--)
System.out.println("Elemento " + vetor[i] + "
posicao " + i);
}
}
} // Fim da classe
15. Classe que exemplifica a utilizaçãoClasse que exemplifica a utilização
da pilhada pilha
import javax.swing.JOptionPane;
class usaPilha {
static Pilha P = new Pilha(5);
int i = 0;
static Object valor;
public static void main(String args[]){
int opcao = 1;
while (opcao != 4) {
opcao = Integer.parseInt
(JOptionPane.showInputDialog(null, "Escolha uma
Opçao n" + "1-Inserir um elemento na pilha n" + "2-
Excluir elemento da pilha n" + "3-Exibir elementos da
pilhan" + "4-Sair n"));
16. Classe que exemplifica a utilizaçãoClasse que exemplifica a utilização
da pilha - Continuaçãoda pilha - Continuação
switch (opcao) {
case 1 :
valor = JOptionPane.showInputDialog(null, "Empilhar
elemento n" + "Digite um valor");
P.empilhar(valor);
break;
case 2 :
System.out.println("Elemento desempilhado " +
P.desempilhar());
break;
case 3 :
P.exibePilha();
break;
default: JOptionPane.showMessageDialog(null,"Sair");
}
}
}}