Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

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 Java

Quantidade de visualizações: 530 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.
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

Código para a classe Nó (No.java):

----------------------------------------------------------------------
Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Este código foi útil? Paga um cafezinho pra mim :-(
PIX: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

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):

----------------------------------------------------------------------
Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Este código foi útil? Paga um cafezinho pra mim :-(
PIX: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

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):

----------------------------------------------------------------------
Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Este código foi útil? Paga um cafezinho pra mim :-(
PIX: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

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;
      }
    }
  }
}


Link para compartilhar na Internet ou com seus amigos:

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

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 31 usuários muito felizes estudando em nosso site.