Pilhas: Meu código se encaixa nesse conceito?

1 resposta
J
Olá amigos, a alguns dias atrás postei aqui algumas duvidas sobre pilhas !!! Já que não tivesse aula sobre o assunto ainda e a maioria do conteúdo que encontrei ainda é um pouco vago, resolvi começar desenvolvendo um código usando apenas vetor sem utilizar a classe Stack, porém me surgiu uma duvida ao terminar o código: Será que ele se encaixa no conceito que envolve pilha? Vou deixa-lo abaixo para que possam analisa-lo:
import javax.swing.JOptionPane;


public class Principal {

	/**
	 * @By: Robson Barreto 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
       String elemento[]= new String [10];
       String resultado ="";
       int op;
   
       do{
	     op=Integer.parseInt(JOptionPane.showInputDialog("Escola uma opção"+"\n1-Empilhar"+"\n2-Desempilhar"+"\n0-Sair"));
  
        switch(op){
          case 1:
	       for(int i=0;i<10;i++){
		     elemento[i]=JOptionPane.showInputDialog("Digite o elemento"+" "+(i+1));
		     if(elemento[i].isEmpty()){
			    JOptionPane.showMessageDialog(null,"Elemento não pode ser nulo!");
			    System.exit(0);
		     }
	        }
            for(int i=0;i<10;i++){
	          resultado=resultado+((i+1)+" "+elemento[i])+"\n";
	          JOptionPane.showMessageDialog(null,"Sua pilha está assim: "+"\n"+resultado);     
  
            } 
          break;
          case 2:
	        for(int i=10-1;i>=0;i--){
              resultado="";
		      resultado=resultado+((i+1)+" "+elemento[i])+"\n";
	          JOptionPane.showMessageDialog(null,"Removendo elemento: "+"\n"+resultado);
	        }
          break;
   
         default:
	       JOptionPane.showMessageDialog(null,"Opção invalida");
         break;
   
         case 0:
	      JOptionPane.showMessageDialog(null,"Finalizando programa...");
        }
     }while(op!=0);
   }
}
Explicando um pouco sobre o código acima: no momento esse código está pedindo 10 nomes(um vetor com 10 posições) e impedindo que alguma posição fique nula usando a função isEmpty, logo após ele exibe os elementos em suas devidas posições.Agora vem a parte que ficou meio(ou muito) vaga: Procurei como remover elementos de uma vetor porém os textos que encontrei não me fizeram entender como isso pode ser feito, então nesse caso essa parte do código exibe a mensagem removendo elemento: + posição do elemento e seu valor( do elemento que está no topo até o elemento que está na base da pílha) !!! Esse meu código se encaixa em pilhas? Como posso melhora-lo? E a ultima pergunta: O uso da classe Stack é a melhor opção para demonstrar uma pilha em funcionamento? Obrigado amigos!!!

1 Resposta

M

Para entender o conceito de pilhas basta entender como vc empilha coisas como livros por exemplo. Vc coloca um, dpois outro e dpois outro... Passado algum tempo se vc quiser tirar um livro da pilha vc precisa tirar o ultimo, dpois o penultimo e assim vai. O primeiro elemento passa a ser o ultimo a ser retirado da pilha.
Vc está programando em java portanto use e abuse de orientação a objetos. Crie uma classe pilha e inclua métodos nela. Não faça tdo no main isso torna seu programa um pouco ilegível (algumas pessoas vêm POO como coisa do demônio). Se vc tivesse fazendo em c ou pascal por exemplo iria falar pra vc criar as funções.

Aqui vai um esboço de como deve ficar sua classe:

public class Pilha{
      private String str = new String[10];
      private int indiceAtual;

      /*Retorna true se a pilha estiver vazia e false se tiver pelo menos um elemento*/
      public boolean isEmpty(){

      }

      /**Desempilha, retorna o último elemento da pilha*/
      public String pop(){
      
      }
      
      /**Empilha/adiciona um elemento na pilha*/
      public void push(String elemento){
      }
}

Ai você pode criar uma outra classe chamada principal q usa um objeto da classe Pilha (ou pode incluir um método main na classe Pilha). Ficaria assim:

public class Principal{
      public static void main (String args[]){
            Pilha pilha = new Pilha();
            pilha.push("Primeiro elemento");
            pilha.push("Segundo");
            System.out.println(pilha.pop());
      }
}

Fazendo desta forma você pode melhorar o código para passar um integer para o construtor criar um vetor com x possições.
Não tenho como compilar o código aqui por isso lhe mandei apenas um esboço. Se vc digitar no google "estruturas de dados pilhas" vc encontrará um monte de implementações a maioria delas em c mas também encontrará algumas em java.

Criado 26 de agosto de 2012
Ultima resposta 26 de ago. de 2012
Respostas 1
Participantes 2