Pilha Dinâmica Orientada a Objetos com Java
Publicado por Perfil removido (última atualização em 08/06/2010)
[ Hits: 18.619 ]
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.
//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");
}
}
Manipulação de processos em Java
Instalando java no ubuntu, fácil e rápido...
Conversor de temperatura (com gráficos)
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









