Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Pilhas |
Escreva um programa Java para implementar uma classe Pilha usando uma lista ligada. Sua classe deverá oferecer as funções para empilhar, desempilhar - Exercícios Resolvidos de JavaQuantidade de visualizações: 755 vezes |
|
Pergunta/Tarefa: Escreva um programa Java para implementar uma classe Pilha usando uma lista ligada. Sua classe deverá oferecer as funções para empilhar, desempilhar, exibir os nós da pilha e verificar se a pilha está vazia. Na classe principal do seu programa Java você deverá fornecer um menu de opções para gerenciar a pilha. Uma sugestão é usar a estrutura switch() para criar o menu. Atenção: Sua solução deverá, obrigatoriamente, usar uma lista encadeada como implementação da pilha. Não é permitido usar arrays nem ArrayList. Sua saída deve ser parecida com:
------------------------------
PILHA EM JAVA
------------------------------
1. Empilhar
2. Desempilhar
3. Exibir Pilha
4. Sair
Sua opção: 1
Informe o valor a ser empilhado: 35
Valor empilhado com sucesso.
Veja a resolução comentada deste exercício usando Java: Código para a classe Nó (No.java):
package estudos;
// definição da classe No
public class No {
int valor; // valor do nó
No proximo; // aponta para o próximo nó
}
Código para a classe Pilha (Pilha.java):
package estudos;
public class Pilha {
No topo; // aponta para o topo da pilha
// construtor da classe
public Pilha() {
this.topo = null; // pilha vazia
}
// metodo que permite verificar se a pilha está vazia
public boolean isVazia(){
return this.topo == null;
}
// método que permite empilhar um novo valor na pilha
public void empilhar(int v){
// criamos um novo nó
No novo_no = new No();
// definimos o valor do nó
novo_no.valor = v;
// apontamos para o nó que estava no topo
novo_no.proximo = this.topo;
// e a variável topo agora aponta para o novo nó
this.topo = novo_no;
}
// método que permite desempilhar um nó da pilha
public No desempilhar(){
// nó a ser retornado
No removido = null;
// a pilha não está vazia, né?
if (this.topo != null) {
// apontamos para o topo da pilha
No temp = this.topo;
// agora o topo aponta para o seu próximo
this.topo = this.topo.proximo;
// guardamos o valor para retornar no nó removido
removido = new No();
removido.valor = temp.valor;
// e marcamos o nó temp para remoção
temp = null;
}
// retorna o nó desempilhado
return removido;
}
// método que permite exibir todos os nós da pilha
public void exibirNos(){
// vamos apontar para o topo da pilha
No temp = this.topo;
// enquanto temp for diferente de null
while (temp != null) {
System.out.println(temp.valor);
// pulamos para o próximo nó
temp = temp.proximo;
}
}
}
E agora o código para a classe principal, que contém um menu de opções para gerenciar a pilha (Estudos.java):
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos criar uma nova pilha
Pilha pilha = new Pilha();
// menu de opções para a pilha
while(true){
System.out.println("\n------------------------------");
System.out.println(" PILHA EM JAVA");
System.out.println("------------------------------");
System.out.println("1. Empilhar");
System.out.println("2. Desempilhar");
System.out.println("3. Exibir Pilha");
System.out.println("4. Sair");
System.out.print("Sua opção: ");
int opcao = Integer.parseInt(entrada.nextLine());
switch(opcao){
case 1: // vamos empilhar um novo valor na pilha
System.out.print("\nInforme o valor a ser empilhado: ");
int valor = Integer.parseInt(entrada.nextLine());
pilha.empilhar(valor);
System.out.println("\nValor empilhado com sucesso.");
break;
case 2: // vamos desempilhar um valor da pilha
No desempilhado = pilha.desempilhar();
if(desempilhado == null){
System.out.println("\nPilha vazia.");
}
else{
System.out.println("\nO valor desempilhado foi: " +
desempilhado.valor);
}
break;
case 3: // vamos mostrar o conteúdo da pilha
if(pilha.isVazia()){
System.out.println("\nA pilha está vazia.");
}
else{
System.out.println("\nElementos na pilha:\n");
pilha.exibirNos();
}
break;
default:
System.out.println("\nOpção inválida.");
break;
}
}
}
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




