Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas

Como remover no final de uma lista ligada em Java - Escreva um programa Java que cria uma lista dinamicamente encadeada - Desafio de Programação Resolvido em Java

Quantidade de visualizações: 600 vezes
Pergunta/Tarefa:

Escreva um programa Java que cria uma lista dinamicamente encadeada (lista singularmente encadeada) e peça para o usuário inserir 5 elementos do tipo inteiro. Em seguida faça a remoção do nó no final da lista ligada e retorne o seu valor.

Sua saída deve ser parecida com:

Inserindo 5 valores na lista

Informe o 1.o valor: 8
Informe o 2.o valor: 5
Informe o 3.o valor: 3
Informe o 4.o valor: 9
Informe o 5.o valor: 4

Valores na lista: 8 -> 5 -> 3 -> 9 -> 4 -> null

Removendo no final da lista
O nó removido foi: 4

Valores na lista novamente: 8 -> 5 -> 3 -> 9 -> null
Resposta/Solução:

Na saída podemos ver que a lista contém os valores 8, 5, 3, 9 e 4. Depois que o nó no final é removido, os elementos da lista ficam 8, 5, 3 e 9.

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

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;
  
import java.util.Scanner;

// classe interna usada para representar um
// nó na lista ligada
class No {
  int valor; // valor do nó
  No proximo; // aponta para o novo nó
 
  // construtor cheio da classe No
  public No(int valor, No proximo) {
    this.valor = valor;
    this.proximo = proximo;
  }
  
  // construtor vazio da classe No
  public No() {
    this.valor = 0;
    this.proximo = null;
  }
}

public class Estudos { 
  // vamos criar uma referência para o início da lista
  static No inicio = null;
  
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos inserir 5 valores inteiros na lista ligada
    int valor;
    System.out.println("Inserindo 5 valores na lista\n");
    for (int i = 0; i < 5; i++) {
      System.out.print("Informe o " + (i + 1) + ".o valor: ");
      valor = Integer.parseInt(entrada.nextLine());
      // vamos inserir este valor no final da lista
      inserirFinal(valor);
    }
    
    // vamos exibir os valores na lista ligada
    System.out.print("\nValores na lista: ");
    exibirLista();
    
    // vamos remover o nó no final da lista ligada
    System.out.println("\nRemovendo no final da lista");
    No removido = removerFinal();
    System.out.println("O nó removido foi: " +
      removido.valor);
    
    // vamos exibir os valores na lista ligada
    System.out.print("\nValores na lista novamente: ");
    exibirLista();
  }
  
  // método que permite remover e retornar um nó no final da lista
  public static No removerFinal(){
    // a lista está vazia?
    if (inicio == null){ 
      return null;
    }
    
    // precisamos de nós auxiliares para chegar até o nó
    // antes do último
    No p = inicio, q = null, proximo = inicio.proximo;
    
    // só existe um nó na lista?
    if (proximo == null) {
      inicio = null;
      // retorna o nó removido
      return p;
    }

    // existe mais de um nó na lista
    while((proximo = p.proximo) != null) { 
      // avançamos os ponteiros dos nós
      q = p; 
      p = proximo;
    }

    // ajustamos o próximo como null 
    q.proximo = null;
    // retorna o nó removido
    return p;
  }

  // função que permite adicionar um nó no final da
  // lista ligada
  public static void inserirFinal(int valor) {
    // vamos apontar para o nó inicial
    No atual = inicio;
    // criamos um novo nó
    No novo = criarNo(valor);
  
    // a lista ligada ainda está vazia?
    if (atual == null){
      // inicio recebe o novo nó
      inicio = novo;
    }    
    else { // temos um ou mais nós na lista ligada
      // vamos localizar o último nó
      while (atual.proximo != null) {
        atual = atual.proximo;
      }
       
      // encontramos o último nó. Agora vamos inserir
      // o novo nó depois dele
      atual.proximo = novo;
    }
  }
  
  // função usada para construir e retornar um novo nó
  public static No criarNo(int valor) {
    // cria o novo nó
    No no = new No(valor, null);
    // retorna o nó criado
    return no;
  }
  
  // função usada para percorrer a lista ligada e
  // exibir os valores contidos em seus nós
  public static void exibirLista() {
    // vamos apontar para o início da lista
    No temp = inicio;
    
    // a lista está vazia?
    if (temp == null) {
      System.out.println("A lista está vazia.");
    }
    else {
      // esse laço se repete enquanto tempo for
      // diferente de null
      while (temp != null) {
        // vamos mostrar o valor desse nó
        System.out.print(temp.valor + " -> ");
        // avança para o próximo nó
        temp = temp.proximo;
      }
    
      // mostra o final da lista
      System.out.println("null");
    }
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Coleções (Collections) ::: Vector

Java Collections - Como remover um determinado elemento de um Vector baseado em seu valor

Quantidade de visualizações: 11734 vezes
Muitas vezes precisamos excluir um determinado elemento de um Vector baseado em seu valor. Isso pode ser feito com o método remove(). Veja sua assinatura:

public boolean remove(Object o)
Veja que só precisamos fornecer o valor do elemento a ser removido. O retorno será um valor boolean mostrando o resultado da operação. Eis um trecho de código exemplificando isso:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.util.*;

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria o Vector
    Vector<String> nomes = new Vector<String>();

    // adiciona itens ao Vector
    nomes.addElement("Osmar");
    nomes.addElement("Marcos");
    nomes.addElement("Ingrid");

    // vamos exibir os elementos
    for(String nome : nomes)
      System.out.println(nome);

    // vamos excluir o elemento "Ingrid"
    boolean sucesso = nomes.remove("Ingrid");
    if(sucesso)    
      System.out.println("\nO elemento foi removido " +
        "com sucesso.\n");
    else 
      System.out.println("\nO elemento NAO foi removido " +
        "com sucesso.\n");

    // vamos exibir os elementos novamente
    for(String nome : nomes)
      System.out.println(nome);
  } 
}

Ao executar este exemplo nós teremos o seguinte resultado:

Osmar
Marcos
Ingrid

O elemento foi removido com sucesso.

Osmar
Marcos


Java ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros compostos e montante usando a linguagem Java - Fórmula de juros compostos em Java - Revisado

Quantidade de visualizações: 20643 vezes
O regime de juros compostos é o mais comum no sistema financeiro e, portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte.

Chamamos de capitalização o momento em que os juros são incorporados ao principal. Assim, após três meses de capitalização, temos:

1º mês: M = P .(1 + i)
2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i)
3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i)

Simplificando, obtemos a fórmula:

M = P . (1 + i)^n

Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses.

Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período:

J = M - P

Vejamos um exemplo:

Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros?

Veja o código Java para a resolução:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  public static void main(String args[]){
    double principal = 2000.00;
    double taxa = 0.03;
    int meses = 3;
   
    double montante = principal * Math.pow((1 + taxa), meses);  
    double juros = montante - principal;
 
    System.out.println("O total de juros a ser pago é: " 
      + juros);
    System.out.println("O montante a ser pago é: " 
      + montante);
 
    System.exit(0);
  }
}

Ao executarmos este código nós teremos o seguinte resultado:

O total de juros a ser pago é: 185.45400000000018
O montante a ser pago é: 2185.454

É claro que uma formatação para moeda deixaria os valores mais bonitos.

Uma outra aplicação interessante é mostrar mês a mês a evolução dos juros.

Veja o código a seguir:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  public static void main(String args[]){
    double principal = 2000.00;
    double taxa = 0.03;
    int meses = 3;
    double anterior = 0.0;  
 
    for(int i = 1; i <= meses; i++){
      double montante = principal * Math.pow((1 + taxa), i);
      double juros = montante - principal - anterior;
       
      anterior += juros;
 
      System.out.println("Mês: " + i + " - Montante: " 
        + montante + " - Juros: " + juros);
    }     
 
    System.exit(0);
  }
}

Ao executarmos este código nós teremos o seguinte resultado:

Mês: 1 - Montante: 2060.0 - Juros: 60.0
Mês: 2 - Montante: 2121.7999999999997 - Juros: 61.79999999999973
Mês: 3 - Montante: 2185.454 - Juros: 63.65400000000045

Esta dica foi revisada e testada no Java 8.


Java ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como obter o valor de PI em Java usando a constante Math.PI

Quantidade de visualizações: 21010 vezes
A constante PI, ou simplesmente PI, é o valor da razão entre a circunferência de qualquer círculo e seu diâmetro. Veja a figura abaixo para melhor entendimento:



Em Java, o PI pode ser obtido por meio do uso da constante PI da classe Math. Seu valor é algo como: 3,14159...

Veja o trecho de código abaixo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    // obtém e exibe o valor da constante PI
    System.out.println("O valor de PI é: " + Math.PI);

    System.exit(0);
  }
}

Ao executar este código nós teremos o seguinte resultado:

O valor de PI é: 3.141592653589793


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
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á 30 usuários muito felizes estudando em nosso site.