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 Árvore...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Introdução
o Até o momento:
o Vetores estáticos;
o Com tamanh...
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 sim...
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....
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Elementos de uma pilha
o criar uma pilha vazia;
o inserir um ...
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 top...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
oTopo() - retorna o objeto que está no topo ...
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...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
package PilhaJava;
import java.util.Empt...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
Try{ // usou try pois a pilha pode estar...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha pronta em JAVA
try{ // usou try pois a pilha pode estar...
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 {...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
public PilhaVetor(int tam){
capacidade = tam;...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// empilha um certo elemento no topo da
// pi...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// retira e retorna o elemento que estah
// n...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
// retorna o elemento que estah no topo
// de...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
public static void main(String[] args) {
Dado...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Pilha com vetor
res = (Dados) pilha.verTopo();
System.out.pri...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
Representação do nó ou célula
Representação ...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
public class No<T> {
private T valor;
privat...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
TDA de uma pilha
ublic class Pilha<T> {
protected No<T> topo;...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Criar uma pilha e verificar pilha vazia
public Pilha(){
taman...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Criar uma pilha e verificar pilha vazia
public boolean vazia(...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (i)
1. Pré-requisito: pilha tem que estar c...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (ii)
5. Faz o topo apontar para o elemento ...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (iii)
5. Faz o topo apontar para o elemento...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Inserção na pilha (iii)
5. Faz o topo apontar para o elemento...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Remoção da pilha (i)
1. Pré-condição é que tenha elementos na...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Remoção da pilha (i)
T desempilhar (){
No<T> aux = null;
T el...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Ver topo da pilha (i)
1. Pré-requisito é ter elementos na pil...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Zerar pilha
public static void main(String[] args){
Pilha<Int...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Exercícios
• Dado o TDA abaixo criar uma pilha para armazenar...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Exercícios
• Método principal
printf(“Menu”);
printf(“n1.Empi...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar
• Considerando uma Pilha vazia, quais são os comando...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar implementação
• Escreve um programa que utilizando u...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Praticar implementação
Implemente uma APLICAÇÃO que utilize u...
INSTITUTO FEDERAL
TRIÂNGULO MINEIRO
Campus Uberlândia Centro
Fim da aula.....
ricardoboaventura@iftm.edu.br
Próximos SlideShares
Carregando em…5
×

Estrutura de Dados - PILHAS

826 visualizações

Publicada em

AULA SOBRE PILHAS SISTEMAS PARA INTERNET ESTRUTURA DE DADOS 2015

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
826
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
26
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Estrutura de Dados - PILHAS

  1. 1. Estrutura de Dados (Aula 03)
  2. 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. 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. 4. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha (Stack)
  5. 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. 6. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Funcionamento de uma pilha
  7. 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. 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. 9. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Elementos de uma pilha oPilha com vetores
  10. 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. 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. 12. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha pronta em JAVA
  13. 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. 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. 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. 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. 17. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Pilha com vetor
  18. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 28. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Criar uma pilha e verificar pilha vazia public Pilha(){ tamanho = 0; topo = null; }
  29. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 43. INSTITUTO FEDERAL TRIÂNGULO MINEIRO Campus Uberlândia Centro Fim da aula..... ricardoboaventura@iftm.edu.br

×