SlideShare uma empresa Scribd logo
1 de 16
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.
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.
PilhasPilhas
ExemploExemplo
Pseudocódigo que representa uma pilha implementada
com arranjo
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
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
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
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
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
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];
}
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;
}
Método empilharMétodo empilhar
public void empilhar(Object elem){
if (cheia( ) == false)
{ topo++;
vetor[topo] = elem;
}else
System.out.println("Pilha Cheia");
}
Método desempilharMétodo desempilhar
public Object desempilhar(){
Object valorDesempilhado;
if (vazia( ) == true)
valorDesempilhado = "Pilha Vazia";
else{
valorDesempilhado = vetor[topo];
topo--;
}
return valorDesempilhado;
}
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
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"));
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");
}
}
}}

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Listas em C
Listas em CListas em C
Listas em C
 
Filas encadeadas
Filas encadeadasFilas encadeadas
Filas encadeadas
 
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
 
11 tipos abstratos de dados
11   tipos abstratos de dados11   tipos abstratos de dados
11 tipos abstratos de dados
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
12 algoritmos e funcoes recursivas
12   algoritmos e funcoes recursivas12   algoritmos e funcoes recursivas
12 algoritmos e funcoes recursivas
 
Python Numpy
Python NumpyPython Numpy
Python Numpy
 

Semelhante a Pilha (12)

Aula 8
Aula 8Aula 8
Aula 8
 
Pilhas java
Pilhas javaPilhas java
Pilhas java
 
Aula 9
Aula 9Aula 9
Aula 9
 
Aula 10
Aula 10 Aula 10
Aula 10
 
Pilha ad
Pilha adPilha ad
Pilha ad
 
Aula 11
Aula 11Aula 11
Aula 11
 
Programação-Aula004
Programação-Aula004Programação-Aula004
Programação-Aula004
 
Aula02 Pilhas
Aula02   PilhasAula02   Pilhas
Aula02 Pilhas
 
Aula 17
Aula 17Aula 17
Aula 17
 
Aula 12
Aula 12Aula 12
Aula 12
 
Aula 15
Aula 15Aula 15
Aula 15
 
Aula 16
Aula 16Aula 16
Aula 16
 

Pilha

  • 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.
  • 4. ExemploExemplo Pseudocódigo que representa uma pilha implementada com arranjo
  • 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; }
  • 12. Método empilharMétodo empilhar public void empilhar(Object elem){ if (cheia( ) == false) { topo++; vetor[topo] = elem; }else System.out.println("Pilha Cheia"); }
  • 13. Método desempilharMétodo desempilhar public Object desempilhar(){ Object valorDesempilhado; if (vazia( ) == true) valorDesempilhado = "Pilha Vazia"; else{ valorDesempilhado = vetor[topo]; topo--; } return valorDesempilhado; }
  • 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"); } } }}