SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Estrutura de Dados
(Aula 03)
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
1. Estrutura de Dados
8.1 Pilha
8.2 Fila
8.3 Lista
8.4 Árvores de pesquisa
http://www.inf.ufsc.br/~ronaldo/ine5384/15-
OrdenacaoDados.pdf
Tema da aula
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Introdução
o Até o momento:
o Vetores estáticos;
o Com tamanho definido;
o Acesso sequêncial;
o De agora em diante:
o Estruturas dinâmicas;
o Com tamanho indefinido;
0 1 2 3 4 5
3 8 7 9 0 3
3 8 7 9 0 3
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha
(Stack)
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Estrutura de dados de pilha
o É a estrutura de dados mais simples;
o É implementada diretamente pelo hardware das
máquinas modernas;
o Idéia fundamental da pilha é que todo o acesso a
seus elementos é feito através do seu topo;
o O único elemento que pode ser removido é o topo;
o Com esse fundamento faz com que os elementos da
pilha sejam retirados de ordem inversa;
o LIFO – Last In First Out
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Funcionamento de uma pilha
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Exemplo de uma aplicação com uso de
pilha
http://www.gameson.com.br/Jogos-Online/ClassicoPuzzle/Torre-de-
Hanoi.html
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Elementos de uma pilha
o criar uma pilha vazia;
o inserir um elemento no topo de uma pilha;
o remover o elemento que está no topo de pilha;
o verificar se a pilha esta vazia;
o verificar o elemento que esta no topo da pilha;
o zerar a pilha;
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Elementos de uma pilha
oPilha com vetores
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
oEmpilha(elemento) – insere um objeto no topo da pilha
•Entrada = objeto saida = nenhum
oDesempilhar() - retira um objeto do topo de pilha e o retorna,
deverá ter uma proteção pois a pilha não pode estar vazia
•Entrada = nenhum saída = objeto
oTamanho() - retorna o número de objetos dentro de uma pilha
•Entrada = nenhuma saída = inteiro
oVazia() - retorna um booleano indicando se a pilha está vazia
•Entrada = nenhuma saída = booleano
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
oTopo() - retorna o objeto que está no topo de uma pilha,
deverá ter uma proteção para a pilha vazia;
•Entrada = nenhuma saída = objeto
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
o Em Java já temos uma classe para o TDA pilha, portanto
basta importarmos o:
•java.util.Stack
o Os métodos push(obj) e pop() são equivalentes a empilha(o)
e desempilha() respectivamente
o O método peek() é equivalente ao método topo(), tamanho()
e vazia();
o Os métodos pop() e peek() laçam a exceção
StackEmptyException se a pilha estiver vazia
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
package PilhaJava;
import java.util.EmptyStackException;
import java.util.Stack;
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
Try{ // usou try pois a pilha pode estar vazia
Stack pilha = new Stack();
//cria uma pilha como se fosse um objeto genérico
. . .
}
catch(EmptyStackException e){
System.out.println("Pilha vazia");
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
try{ // usou try pois a pilha pode estar vazia
. . .
pilha.push(1);
pilha.push(2);
System.out.println(pilha.peek());
pilha.pop();
System.out.println(pilha.peek());
pilha.pop();
System.out.println(pilha.peek());
}
catch(EmptyStackException e){
System.out.println("Pilha vazia");
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
package PilhaVetor;
public class PilhaVetor {
public static final int total = 1000;
private int capacidade;
private Object pilha[];
private int topo = -1;
public PilhaVetor(){}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
public PilhaVetor(int tam){
capacidade = tam;
pilha = new Object[capacidade];
}
// retorna a quantidade de elementos da // pilha
public int tamanho(){
return topo + 1;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// empilha um certo elemento no topo da
// pilha
public void empilhar(Object elemento){
if(tamanho() == capacidade)
System.out.println("Pilha Cheia");
else
pilha[++topo] = elemento;
}
// informa se a pilha estah vazia ou nao
public boolean vazia(){
return(topo < 0);
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// retira e retorna o elemento que estah
// no topo da pilha
public Object desempilhar(){
Object fora = null;
if(vazia())
System.out.println("Pilha Vazia");
else{
fora = pilha[topo];
pilha[topo] = null;
topo--;
}
return fora;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// retorna o elemento que estah no topo
// de uma pilha
public Object verTopo(){
if(!vazia())
return pilha[topo];
else
return null;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
public static void main(String[] args) {
Dados a = new Dados("Ricardo", "Rua x", 34);
Dados b = new Dados("Maria", "Rua y", 60);
Dados c = new Dados("Joao", "Rua v", 19);
PilhaVetor pilha = new PilhaVetor(3);
pilha.empilhar(a);
pilha.empilhar(b);
pilha.empilhar(c);
Dados res = (Dados) pilha.verTopo();
System.out.println(res.getNome() + " - "
+ res.getEndereco() + " - "
+ res.getIdade());
pilha.desempilhar();
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
res = (Dados) pilha.verTopo();
System.out.println(res.getNome() + " - "
+ res.getEndereco() + " - "
+ res.getIdade());
pilha.desempilhar();
res = (Dados) pilha.verTopo();
if (res != null)
System.out.println(res.getNome() + " - "
+ res.getEndereco() + " - "
+ res.getIdade());
else
System.out.println("Pilha vazia");
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
Representação do nó ou célula
Representação da pilha
topo
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
public class No<T> {
private T valor;
private No<T> proximo;
public No(T valor, No<T> proximo) {
this.valor = valor;
this.proximo = proximo;
}
public No(){}
....
// alem disso temos os
// métodos de getters e
// setters
}
Representação do nó ou célula
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
ublic class Pilha<T> {
protected No<T> topo;
protected int tamanho;
public Pilha(){
tamanho = 0;
topo = null;
}
....
} Representação da pilha
topo
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Criar uma pilha e verificar pilha vazia
public Pilha(){
tamanho = 0;
topo = null;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Criar uma pilha e verificar pilha vazia
public boolean vazia(){
return topo == null;
}
public int tamanho(){
return tamanho;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (i)
1. Pré-requisito: pilha tem que estar criada e o próximo apontando
para NULL;
2. Criar um nó ou célula;
3. Atribuir o elemento ao campo info;
4. O próximo do nó criado será ligado ao para quem o topo esta apontando
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (ii)
5. Faz o topo apontar para o elemento que foi inserido
Próximo passo:
6. O próximo do nó criado será ligado ao para quem o topo esta apontando
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (iii)
5. Faz o topo apontar para o elemento que foi inserido
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (iii)
5. Faz o topo apontar para o elemento que foi inserido
void empilhar (T elemento){
No<T> aux = new No(null, null);
aux.setValor(elemento);
aux.setProximo(topo);
topo = aux;
tamanho++;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Remoção da pilha (i)
1. Pré-condição é que tenha elementos na pilha.
2. Auxiliar recebe o topo da pilha
3. O topo aponta para o próximo do auxiliar
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Remoção da pilha (i)
T desempilhar (){
No<T> aux = null;
T elemento = null;
if (vazia()) {
System.out.println("Pilha vazian");
}
else {
aux = topo;
elemento = topo.getValor();
topo = aux.getProximo();
tamanho--;
}
return elemento;
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Ver topo da pilha (i)
1. Pré-requisito é ter elementos na pilha.
2. Um nó auxiliar recebe o topo e depois apresenta o que tem como info;
void verTopo(){
No<T> aux = null;
if (!vazia()) {
aux = topo;
System.out.println("Topo: " + aux.getValor());
}
else{
System.out.println("Pilha vazian");
}
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Zerar pilha
public static void main(String[] args){
Pilha<Integer> p = new Pilha();
p.empilhar(1);
p.verTopo();
p.empilhar(2);
p.verTopo();
Integer res = p.desempilhar();
System.out.println("Retirado: " + res.toString());
p.verTopo();
res = p.desempilhar();
System.out.println("Retirado: " + res.toString());
p.verTopo();
}
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Exercícios
• Dado o TDA abaixo criar uma pilha para armazenar dos dados;
Contatos:
nome;
Endereco:
rua;
bairro;
cep;
numero;
Telefone:
fixo;
celular;
trabalho;
email;
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Exercícios
• Método principal
printf(“Menu”);
printf(“n1.Empilhar”);
printf(“n2.Desempilhar”);
printf(“n3.Ver Topo”);
printf(“n4.Zerar”);
printf(“n5.Sair”);
printf(“nDigite a opcao: ”);
scanf(“%d”, &opcao);
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar
• Considerando uma Pilha vazia, quais são os comandos
necessários para a inserção do 1o nó ?
• Considerando uma Pilha não vazia, quais são os comandos
necessários para a exclusão de um nó ?
• Considerando uma Pilha não vazia, quais são os comandos
necessários para a inserção de um novo nó ?
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar implementação
• Escreve um programa que utilizando uma pilha determina se
uma string é um palíndromo ou não, isto é, se pode ser lida da
mesma maneira para frente ou para trás.
• Implemente uma APLICAÇÃO que utilize uma pilha para
conversão de expressões da notação tradicional (infixa),
completamente parentizadas, para a e notação polonesa
reversa (pós-fixada).
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar implementação
Implemente uma APLICAÇÃO que utilize uma pilha para
conversão de expressões da notação tradicional (infixa),
completamente parentizadas, para a e notação polonesa reversa
(pré-fixada).
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Fim da aula.....
ricardoboaventura@iftm.edu.br

Weitere ähnliche Inhalte

Was ist angesagt?

Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Pacc UAB
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamentoCarlos Melo
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência ArtificialNEO Empresarial
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasLeinylson Fontinele
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
Aula03 exercicio fluxograma casa
Aula03   exercicio fluxograma casaAula03   exercicio fluxograma casa
Aula03 exercicio fluxograma casaGrupo Tiradentes
 

Was ist angesagt? (20)

Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Bases De Dados
Bases De DadosBases De Dados
Bases De Dados
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Pensamento computacional
Pensamento computacional Pensamento computacional
Pensamento computacional
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
FÍSICA DAS RADIAÇÕES
FÍSICA DAS RADIAÇÕESFÍSICA DAS RADIAÇÕES
FÍSICA DAS RADIAÇÕES
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificial
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Aula03 exercicio fluxograma casa
Aula03   exercicio fluxograma casaAula03   exercicio fluxograma casa
Aula03 exercicio fluxograma casa
 
Historia da internet
Historia da internetHistoria da internet
Historia da internet
 

Ähnlich wie Estruturas de Dados Pilha

Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Loiane Groner
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.pptJoberthSilva
 
11 tipos abstratos de dados
11   tipos abstratos de dados11   tipos abstratos de dados
11 tipos abstratos de dadosRicardo Bolanho
 
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Loiane Groner
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopJean Martina
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsSérgio Souza Costa
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 

Ähnlich wie Estruturas de Dados Pilha (20)

Pilhas java
Pilhas javaPilhas java
Pilhas java
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Aula 8
Aula 8Aula 8
Aula 8
 
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
 
Pilha
PilhaPilha
Pilha
 
Pilha ad
Pilha adPilha ad
Pilha ad
 
Coleções do c
Coleções do cColeções do c
Coleções do c
 
Coleções do c
Coleções do cColeções do c
Coleções do c
 
Aula 9
Aula 9Aula 9
Aula 9
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Aula 10
Aula 10 Aula 10
Aula 10
 
11 tipos abstratos de dados
11   tipos abstratos de dados11   tipos abstratos de dados
11 tipos abstratos de dados
 
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oop
 
Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e Generics
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 

Mehr von Aparicio Junior

Mock test structure TOEFL ITP
Mock test structure TOEFL ITPMock test structure TOEFL ITP
Mock test structure TOEFL ITPAparicio Junior
 
Mock test reading TOEFL ITP
Mock test reading TOEFL ITPMock test reading TOEFL ITP
Mock test reading TOEFL ITPAparicio Junior
 
Mock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPMock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPAparicio Junior
 
General view of the TOEFL ITP
General view of the TOEFL ITPGeneral view of the TOEFL ITP
General view of the TOEFL ITPAparicio Junior
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAAparicio Junior
 
Banco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasBanco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasAparicio Junior
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAparicio Junior
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAparicio Junior
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão javaAparicio Junior
 

Mehr von Aparicio Junior (20)

Tips For the TOELF ITP
Tips For the TOELF ITPTips For the TOELF ITP
Tips For the TOELF ITP
 
Mock test structure TOEFL ITP
Mock test structure TOEFL ITPMock test structure TOEFL ITP
Mock test structure TOEFL ITP
 
Mock test reading TOEFL ITP
Mock test reading TOEFL ITPMock test reading TOEFL ITP
Mock test reading TOEFL ITP
 
Mock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPMock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITP
 
General view of the TOEFL ITP
General view of the TOEFL ITPGeneral view of the TOEFL ITP
General view of the TOEFL ITP
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVA
 
Banco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasBanco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internas
 
Lista 2 5
Lista 2 5Lista 2 5
Lista 2 5
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em Java
 
Lista 2 4
Lista 2 4Lista 2 4
Lista 2 4
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em Java
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão java
 
Lista1 3 java
Lista1 3 javaLista1 3 java
Lista1 3 java
 
Lista 2 2 java
Lista 2 2 javaLista 2 2 java
Lista 2 2 java
 
Lista 2 1 java
Lista 2 1 javaLista 2 1 java
Lista 2 1 java
 
Lista 1 9 java
Lista 1 9 javaLista 1 9 java
Lista 1 9 java
 
Lista 1 8 java
Lista 1 8 javaLista 1 8 java
Lista 1 8 java
 
Lista 1 7 java
Lista 1 7 javaLista 1 7 java
Lista 1 7 java
 
Lista 1 6 java
Lista 1 6 javaLista 1 6 java
Lista 1 6 java
 
Lista 1 5 java
Lista 1 5 javaLista 1 5 java
Lista 1 5 java
 

Estruturas de Dados Pilha

  • 2. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro 1. Estrutura de Dados 8.1 Pilha 8.2 Fila 8.3 Lista 8.4 Árvores de pesquisa http://www.inf.ufsc.br/~ronaldo/ine5384/15- OrdenacaoDados.pdf Tema da aula
  • 3. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Introdução o Até o momento: o Vetores estáticos; o Com tamanho definido; o Acesso sequêncial; o De agora em diante: o Estruturas dinâmicas; o Com tamanho indefinido; 0 1 2 3 4 5 3 8 7 9 0 3 3 8 7 9 0 3
  • 4. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha (Stack)
  • 5. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Estrutura de dados de pilha o É a estrutura de dados mais simples; o É implementada diretamente pelo hardware das máquinas modernas; o Idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo; o O único elemento que pode ser removido é o topo; o Com esse fundamento faz com que os elementos da pilha sejam retirados de ordem inversa; o LIFO – Last In First Out
  • 6. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Funcionamento de uma pilha
  • 7. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Exemplo de uma aplicação com uso de pilha http://www.gameson.com.br/Jogos-Online/ClassicoPuzzle/Torre-de- Hanoi.html
  • 8. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Elementos de uma pilha o criar uma pilha vazia; o inserir um elemento no topo de uma pilha; o remover o elemento que está no topo de pilha; o verificar se a pilha esta vazia; o verificar o elemento que esta no topo da pilha; o zerar a pilha;
  • 9. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Elementos de uma pilha oPilha com vetores
  • 10. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro TDA de uma pilha oEmpilha(elemento) – insere um objeto no topo da pilha •Entrada = objeto saida = nenhum oDesempilhar() - retira um objeto do topo de pilha e o retorna, deverá ter uma proteção pois a pilha não pode estar vazia •Entrada = nenhum saída = objeto oTamanho() - retorna o número de objetos dentro de uma pilha •Entrada = nenhuma saída = inteiro oVazia() - retorna um booleano indicando se a pilha está vazia •Entrada = nenhuma saída = booleano
  • 11. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro TDA de uma pilha oTopo() - retorna o objeto que está no topo de uma pilha, deverá ter uma proteção para a pilha vazia; •Entrada = nenhuma saída = objeto
  • 12. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA
  • 13. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA o Em Java já temos uma classe para o TDA pilha, portanto basta importarmos o: •java.util.Stack o Os métodos push(obj) e pop() são equivalentes a empilha(o) e desempilha() respectivamente o O método peek() é equivalente ao método topo(), tamanho() e vazia(); o Os métodos pop() e peek() laçam a exceção StackEmptyException se a pilha estiver vazia
  • 14. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA package PilhaJava; import java.util.EmptyStackException; import java.util.Stack;
  • 15. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA Try{ // usou try pois a pilha pode estar vazia Stack pilha = new Stack(); //cria uma pilha como se fosse um objeto genérico . . . } catch(EmptyStackException e){ System.out.println("Pilha vazia"); }
  • 16. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA try{ // usou try pois a pilha pode estar vazia . . . pilha.push(1); pilha.push(2); System.out.println(pilha.peek()); pilha.pop(); System.out.println(pilha.peek()); pilha.pop(); System.out.println(pilha.peek()); } catch(EmptyStackException e){ System.out.println("Pilha vazia"); }
  • 17. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor
  • 18. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor package PilhaVetor; public class PilhaVetor { public static final int total = 1000; private int capacidade; private Object pilha[]; private int topo = -1; public PilhaVetor(){}
  • 19. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor public PilhaVetor(int tam){ capacidade = tam; pilha = new Object[capacidade]; } // retorna a quantidade de elementos da // pilha public int tamanho(){ return topo + 1; }
  • 20. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor // empilha um certo elemento no topo da // pilha public void empilhar(Object elemento){ if(tamanho() == capacidade) System.out.println("Pilha Cheia"); else pilha[++topo] = elemento; } // informa se a pilha estah vazia ou nao public boolean vazia(){ return(topo < 0); }
  • 21. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor // retira e retorna o elemento que estah // no topo da pilha public Object desempilhar(){ Object fora = null; if(vazia()) System.out.println("Pilha Vazia"); else{ fora = pilha[topo]; pilha[topo] = null; topo--; } return fora; }
  • 22. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor // retorna o elemento que estah no topo // de uma pilha public Object verTopo(){ if(!vazia()) return pilha[topo]; else return null; }
  • 23. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor public static void main(String[] args) { Dados a = new Dados("Ricardo", "Rua x", 34); Dados b = new Dados("Maria", "Rua y", 60); Dados c = new Dados("Joao", "Rua v", 19); PilhaVetor pilha = new PilhaVetor(3); pilha.empilhar(a); pilha.empilhar(b); pilha.empilhar(c); Dados res = (Dados) pilha.verTopo(); System.out.println(res.getNome() + " - " + res.getEndereco() + " - " + res.getIdade()); pilha.desempilhar();
  • 24. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor res = (Dados) pilha.verTopo(); System.out.println(res.getNome() + " - " + res.getEndereco() + " - " + res.getIdade()); pilha.desempilhar(); res = (Dados) pilha.verTopo(); if (res != null) System.out.println(res.getNome() + " - " + res.getEndereco() + " - " + res.getIdade()); else System.out.println("Pilha vazia");
  • 25. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro TDA de uma pilha Representação do nó ou célula Representação da pilha topo
  • 26. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro TDA de uma pilha public class No<T> { private T valor; private No<T> proximo; public No(T valor, No<T> proximo) { this.valor = valor; this.proximo = proximo; } public No(){} .... // alem disso temos os // métodos de getters e // setters } Representação do nó ou célula
  • 27. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro TDA de uma pilha ublic class Pilha<T> { protected No<T> topo; protected int tamanho; public Pilha(){ tamanho = 0; topo = null; } .... } Representação da pilha topo
  • 28. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Criar uma pilha e verificar pilha vazia public Pilha(){ tamanho = 0; topo = null; }
  • 29. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Criar uma pilha e verificar pilha vazia public boolean vazia(){ return topo == null; } public int tamanho(){ return tamanho; }
  • 30. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Inserção na pilha (i) 1. Pré-requisito: pilha tem que estar criada e o próximo apontando para NULL; 2. Criar um nó ou célula; 3. Atribuir o elemento ao campo info; 4. O próximo do nó criado será ligado ao para quem o topo esta apontando
  • 31. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Inserção na pilha (ii) 5. Faz o topo apontar para o elemento que foi inserido Próximo passo: 6. O próximo do nó criado será ligado ao para quem o topo esta apontando
  • 32. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Inserção na pilha (iii) 5. Faz o topo apontar para o elemento que foi inserido
  • 33. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Inserção na pilha (iii) 5. Faz o topo apontar para o elemento que foi inserido void empilhar (T elemento){ No<T> aux = new No(null, null); aux.setValor(elemento); aux.setProximo(topo); topo = aux; tamanho++; }
  • 34. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Remoção da pilha (i) 1. Pré-condição é que tenha elementos na pilha. 2. Auxiliar recebe o topo da pilha 3. O topo aponta para o próximo do auxiliar
  • 35. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Remoção da pilha (i) T desempilhar (){ No<T> aux = null; T elemento = null; if (vazia()) { System.out.println("Pilha vazian"); } else { aux = topo; elemento = topo.getValor(); topo = aux.getProximo(); tamanho--; } return elemento; }
  • 36. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Ver topo da pilha (i) 1. Pré-requisito é ter elementos na pilha. 2. Um nó auxiliar recebe o topo e depois apresenta o que tem como info; void verTopo(){ No<T> aux = null; if (!vazia()) { aux = topo; System.out.println("Topo: " + aux.getValor()); } else{ System.out.println("Pilha vazian"); } }
  • 37. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Zerar pilha public static void main(String[] args){ Pilha<Integer> p = new Pilha(); p.empilhar(1); p.verTopo(); p.empilhar(2); p.verTopo(); Integer res = p.desempilhar(); System.out.println("Retirado: " + res.toString()); p.verTopo(); res = p.desempilhar(); System.out.println("Retirado: " + res.toString()); p.verTopo(); }
  • 38. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Exercícios • Dado o TDA abaixo criar uma pilha para armazenar dos dados; Contatos: nome; Endereco: rua; bairro; cep; numero; Telefone: fixo; celular; trabalho; email;
  • 39. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Exercícios • Método principal printf(“Menu”); printf(“n1.Empilhar”); printf(“n2.Desempilhar”); printf(“n3.Ver Topo”); printf(“n4.Zerar”); printf(“n5.Sair”); printf(“nDigite a opcao: ”); scanf(“%d”, &opcao);
  • 40. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Praticar • Considerando uma Pilha vazia, quais são os comandos necessários para a inserção do 1o nó ? • Considerando uma Pilha não vazia, quais são os comandos necessários para a exclusão de um nó ? • Considerando uma Pilha não vazia, quais são os comandos necessários para a inserção de um novo nó ?
  • 41. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Praticar implementação • Escreve um programa que utilizando uma pilha determina se uma string é um palíndromo ou não, isto é, se pode ser lida da mesma maneira para frente ou para trás. • Implemente uma APLICAÇÃO que utilize uma pilha para conversão de expressões da notação tradicional (infixa), completamente parentizadas, para a e notação polonesa reversa (pós-fixada).
  • 42. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Praticar implementação Implemente uma APLICAÇÃO que utilize uma pilha para conversão de expressões da notação tradicional (infixa), completamente parentizadas, para a e notação polonesa reversa (pré-fixada).
  • 43. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Fim da aula..... ricardoboaventura@iftm.edu.br