Pilha Dinâmica Orientada a Objetos com Java

Publicado por Perfil removido (última atualização em 08/06/2010)

[ Hits: 18.266 ]

Download Pilha_Dinamica.rar




Mais uma de estrutura de dados. Pilha dinâmica orientada a objetos implementada em Java no Eclipse. Possui os métodos empilhar, desempilhar e listar, além de uma classe para tratamento de exceções de pilha vazia com herança na classe NullPointerException. Nessa não implementei a busca, mas pode ser feito facilmente observando o método listar do algoritmo.

Novamente, só importar no Eclipse ou NetBeans, ou copiar do texto, criando cada uma das classes.

Obs.: Tanto a lista duplamente encadeada que enviei anteriormente quanto a pilha dinâmica podem ser facilmente modificadas, como por exemplo, para receber classes no lugar de uma String.

  



Esconder código-fonte

//Classe Nodo

public class Nodo {
   private String valor;
   private Nodo anterior;
   //Define nó anterior
   public void setAnterior(Nodo anterior) {
      this.anterior = anterior;
   }
   //Retorna nó anterior.
   public Nodo getAnterior() {
      return anterior;
   }
   //Define valor do nó
   public void setValor(String valor) {
      this.valor = valor;
   }
   //Retorna valor do nó
   public String getValor() {
      return valor;
   }
}

//Classe Pilha

import java.util.ArrayList;
public class Pilha {
   //Variavel para definição do topo da pilha.
   Nodo topo = null;
   //Método que empilha valores.
   public void Empilha(String valor){
      Nodo novo = new Nodo();
      novo.setValor(valor);
      novo.setAnterior(topo);
      topo = novo;
   }
   //Método para desempilhar valores
   public String Desempilha() throws EmptyStackException{
      if(topo == null){
         throw new EmptyStackException("A pilha está vazia");
      }
      else{
         String valor = topo.getValor();
         topo = topo.getAnterior();
         return valor;
      }
   }
   //Método para listar pilha. Percorre os nós da pilha atribuindo seus valores em um ArrayList
   public ArrayList<String> Listar() throws EmptyStackException{
      if(topo == null){
         throw new EmptyStackException("A pilha está vazia");
      }
      else{
         ArrayList<String> listar = new ArrayList<String>();
         Nodo aux = topo;      
         while(aux != null){
            listar.add(aux.getValor());
            aux = aux.getAnterior();
         }      
         return listar;
      }
   }
}

//Classe EmptyStackException

public class EmptyStackException extends NullPointerException{
   public EmptyStackException(){
      super();
   }
   public EmptyStackException(String msg){
      super(msg);
   }
}

//Classe Testa Pilha

import java.util.ArrayList;
import java.util.Scanner;
public class TestaPilha {
   
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      Pilha pilha = new Pilha();
      String valor, resp;
      
      do{
         System.out.println("Escolha uma opção:\n1->Empilhar\n2->Desempilhar\n3->Listar");
         resp = sc.next();
         //Empilha um valor.
         if(resp.equals("1")){
            System.out.println("Digite o valor:");
            valor = sc.next();
            pilha.Empilha(valor);
         }
         
         //Desempilha um valor.
         else if(resp.equals("2")){
            try{
               System.out.println("Desempilhado valor " + pilha.Desempilha());
            }
            catch(EmptyStackException e){               
               System.out.println(e.getMessage());
            }
         }
         //Lista os valore na pilha.
         else if(resp.equals("3")){
            ArrayList<String> listar = new ArrayList<String>();
            try{
               listar = pilha.Listar();
            }
            catch(EmptyStackException e){
               System.out.println(e.getMessage());
            }
            
            for(String vl : listar){
               System.out.println(vl);
            }
         }
         else
            System.out.println("Opção inválida!");
         
      }
      while(resp !="9");
   }

}

Scripts recomendados

Gerando instância completa de um objeto

Ordenar um lista estática seqüencial de complexidade média (método da seleção)

Exemplo BubleSort

Conversor de temperatura (com gráficos)

Gerar CSV, DOC e PDF


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts