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 - Listas Ligadas

Como inserir um nó no final de uma lista duplamente encadeada em Java - Escreva um programa Java que pede para o usuário - Desafio de Programação Resolvido em Java

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

Escreva um programa Java que pede para o usuário informar vários valores inteiros e insira-os no final de uma lista duplamente ligada. Não se esqueça de que a lista duplamente encadeada, ou duplamente ligada, é uma variação da lista singularmente ligada.

Diferente de uma lista singularmente encadeada, a lista duplamente encadeada gerencia nós que mantém referências tanto para o próximo nó quanto para o nó anterior. Lembre-se disso durante a sua implementação da resolução do exercício.

Outro cuidado é com relação ao ponteiros para os nós anteriores. Sua implementação da lista duplamente encadeada em Java deve ser capaz de suportar a varredura tanto do início para o final quanto do final para o início.

Sua saída deve ser parecida com:

Inserindo no final da lista

Informe o valor (-1 para sair): 7
Informe o valor (-1 para sair): 2
Informe o valor (-1 para sair): 4
Informe o valor (-1 para sair): 6
Informe o valor (-1 para sair): -1

Nós da lista duplamente encadeada: 7 2 4 6
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

// classe interna para representar os nós da
// lista duplamente encadeada
class No {
  int valor; // valor armazenado no nó
  No anterior; // aponta para o nó anterior
  No proximo; // aponta para o próximo nó
  
  // construtor do nó
  public No(int valor){
    this.valor = valor;
    this.anterior = null;
    this.proximo = null;
  }
}

public class Estudos { 
  // referência para o início da lista duplamente ligada
  static No inicio;
  // referência para o final da lista duplamente ligada
  static No fim;
  
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // agora vamos pedir para o usuário informar
    // valores inteiros. O valor -1 sai do laço
    int valor;
    System.out.println("Inserindo no final da lista\n");
    do {
      System.out.print("Informe o valor (-1 para sair): ");
      valor = Integer.parseInt(entrada.nextLine());
      if (valor != -1) {
        // vamos inserir este valor no final da lista
        // duplamente encadeada
        inserirFinal(valor);
      }
    } while(valor != -1);
     
    // vamos exibir os valores na lista duplamente ligada
    System.out.print("\nNós da lista duplamente encadeada: ");
    exibirLista();
  }
  
  // esta função permite inserir um novo nó no
  // final de uma lista duplamente encadeada
  public static void inserirFinal(int valor) {
    // o primeiro passo é construir um novo nó
    No novo = new No(valor);
    novo.anterior = null; // não possui nó anterior
    novo.proximo = null; // não possui nó próximo
    
    // a lista ainda está vazia?
    if (inicio == null) {
      // tanto o início quanto o fim da lista
      // apontam para o novo nó
      inicio = novo;
      fim = novo;
    }
    else {
      // o campo anterior do novo nó aponta para o
      // final da lista
      novo.anterior = fim;
      // o campo proximo do final da lista aponta
      // para o novo nó
      fim.proximo = novo;
      // finalmente o fim da lista aponta para
      // o novo nó
      fim = novo;
    }
  }
  
  // esta função permite exibir os valores de todos
  // os nós da lista duplamente encadeada
  public static void exibirLista() {
    // apontamos para o início da lista
    No temp = inicio;  
    
    // a lista está vazia?
    if (inicio == null) {  
      System.out.println("A lista está vazia");  
      return;  
    }  
    
    // enquanto temp for diferente de null
    while(temp != null) {
      // mostramos o valor do nó atual
      System.out.print(temp.valor + " ");
      // e pulamos para o nó seguinte
      temp = temp.proximo;  
    }  
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Java - Como corrigir o erro ArrayIndexOutOfBoundsException ao usar um laço for para percorrer os elementos de um array

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

Observe o seguinte trecho de código:

public static void main(String[] args){
  // um vetor de inteiros contendo cinco elementos
  int valores[] = {5, 32, 9, 10, 6};
    
  // vamos usar um laço for para exibir os valores dos elementos
  // do vetorz
  for(int i = 0; i <= 5; i++){
    System.out.println("O valor do " + (i + 1) + "º elemento é " + valores[i]);
  }
}
Quando tentamos executar este código temos um erro do tipo ArrayIndexOutOfBoundsException. Veja a saída produzida:

O valor do 1º elemento é 5
O valor do 2º elemento é 32
O valor do 3º elemento é 9
O valor do 4º elemento é 10
O valor do 5º elemento é 6
Exception in thread "main" 
   java.lang.ArrayIndexOutOfBoundsException: 5
   at javaapplication1.Main.main(Main.java:14)
Java Result: 1
Você é capaz de descobrir a causa do lançamento desta exceção? O erro no código é de sintáxe ou de lógica?

Resposta/Solução:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

O erro no código é de lógica. Como temos cinco elementos no vetor
e o índice do último elemento é 4 (o índice do primeiro elemento é 0),
o valor da variável de controle do laço for não pode ultrapassar 4. No
código acima o valor da variável i vai até 5, o que provoca um erro 
ao tentar acessar um elemento do vetor que não existe.

Para corrigir o erro, basta alterar a linha:

for(int i = 0; i <= 5; i++){

para:

for(int i = 0; i < 5; i++){



Java ::: Pacote java.lang ::: String

Apostila de Java Básico - Como usar o método replace() da classe String para efetuar a substituição de substrings em uma string

Quantidade de visualizações: 7925 vezes
A substituição de substrings, ou seja, pedaços de texto, é uma das tarefas mais comuns em programação. Em Java isso pode ser feito por meio do método replace() da classe String. Veja sua assinatura:

public String replace(CharSequence target, 
  CharSequence replacement)
Veja que tanto o parâmetro target quanto o parâmetro replacement são objetos da interface CharSequence. Algumas das classes que implementam esta interface são: CharBuffer, Segment, String, StringBuffer e StringBuilder. Isso quer dizer que podemos passar qualquer objeto destas classes para o método replace(). O parâmetro target contém a substring a ser substituída pela substring do parâmetro replacement. O retorno do método é uma nova string com as substituições aplicadas. Se não houver nenhuma substituição a string original é retornada.

Veja um trecho de código no qual usamos o método replace() para substituir todas as ocorrências de "C++" por "Java":

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

public class Estudos {
  public static void main(String[] args) {
    String frase = "Programar em C++ é muito bom! Gosto muito de C++";
    System.out.println("Frase original: " + frase);
    
    // vamos substituir todas as ocorrências de "C++" por "Java"
    frase = frase.replace("C++", "Java");
    System.out.println("Depois da substituição: " + frase);
  }
}

Ao executarmos este código teremos o seguinte resultado:

Frase original: Programar em C++ é muito bom! Gosto 
  muito de C++
Depois da substituição: Programar em Java é muito bom! Gosto 
  muito de Java


Note que o método replace() pode atirar uma exceção do tipo NullPointerException se o parâmetro target ou replacement for null.


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

Java Collections - Como remover o elemento no topo de uma Stack usando seu método pop()

Quantidade de visualizações: 9421 vezes
Uma estrutura do tipo pilha (representada aqui por um objeto da classe Stack) permite que seus elementos sejam removidos sempre na ordem contrária em que foram inseridos, ou seja, o último elemento inserido é sempre o primeiro a sair. Veja no trecho de código abaixo como usar o método pop() para remover e retornar o elemento no topo da pilha:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

import java.util.*;

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria uma Stack de String
    Stack<String> pilha = new Stack<String>();
    
    // adiciona três elementos na pilha
    pilha.push("Cuiabá");
    pilha.push("Goiânia");
    pilha.push("Belo Horizonte");

    // remove os elementos, sempre removendo o 
    // elemento do topo primeiro
    while(!pilha.empty()){
      String elem = pilha.pop();
      System.out.println("Elemento removido: " + elem);
    }    
  } 
}

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

Elemento removido foi: Belo Horizonte
Elemento removido foi: Cuiabá
Elemento removido foi: Goiânia


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercício Resolvido de Java - Calculando e exibindo os números primos entre 2 e 100

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

Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Note que o número 1 não é primo.

Escreva um programa (algorítmo) Java que usa um laço for, while ou do...while para calcular e exibir os números primos entre 2 (incluindo) e 100 (incluindo).

Sua saída deverá ser parecida com:

Numeros primos entre 2 e 100: 
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // limite dos números primos (incluindo)
    int limite = 100;
               
    // Lembre-se! O número 1 não é primo
    System.out.println("Numeros primos entre 2 e " + limite + ": ");
  
    // laço que percorre os valores de 2 até o limite desejado
    for(int i = 2; i <= limite; i++){
       boolean primo = true;
                       
       // se o valor de i for 7, a variável j do laço contará
       // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o 
       // módulo de 7 por qualquer um dos valores neste intervalo 
       // for igual a 0, então o número não é primo
       for(int j = 2; j <= (i / 2); j++){
         if(i % j == 0){
           primo = false; // não é primo
           break;
         }
       }
    
       if(primo){
         System.out.print(i + " ");
       }
    }
    
    System.out.println();
  }
}



Java ::: Dicas & Truques ::: Threads

Threads em Java - Como usar a interface Runnable da Java API em suas aplicações

Quantidade de visualizações: 17821 vezes
A interface pública Runnable deve ser implementada em nossas classes quando queremos que instâncias destas possam ser executadas por uma thread. Esta interface está no pacote java.lang e entre as classes que a implementam podemos citar AsyncBoxView.ChildState, FutureTask, RenderableImageProducer, Thread e TimerTask.

Esta interface apresenta apenas um método, a saber:

public void run();
Assim, uma classe que implementa Runnable deverá redefinir este método, sem argumentos, e fornecer a funcionalidade desejada.

Este interface foi idealizada para fornecer um protocolo comum para objetos que têm como objetivo executar determinadas porções de código enquanto ativos. Por exemplo, Runnable é implementada pela classe Thread. Estar ativa significa que uma thread foi iniciada e ainda não finalizou sua tarefa.

Além disso, a interface Runnable fornece meios para que uma classe esteja ativa sem fazer sub-classe de Thread. Uma classe que implementa Runnable pode ser executada sem fazer sub-classe de Thread criando-se uma instância de Thread e fornecendo tal classe como alvo. Na maioria dos casos, a interface Runnable deve ser usada se estivermos planejando apenas sobrescrever o método run() e nenhum outro método da classe Thread. Isso é importante, uma vez que não devemos extender classes a menos que tenhamos a intenção de modificar ou extender o comportamento fundamental da classe.

Veja uma aplicação na qual temos uma classe que implementa Runnable. Note como criamos instâncias de Thread e fornecemos nossa classe como alvo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

// criamos uma classe que servirá como thread
class MinhaThread implements Runnable{
  private String nome;  

  public MinhaThread(String nome){
    this.nome = nome;
  }   

  public void run(){
    for(int i = 1; i <= 20; i++){
      System.out.println(nome + ": " + i);
    }
  }
}

public class Estudos{
  public static void main(String[] args){
    // vamos criar duas threads
    MinhaThread mt1 = new MinhaThread("Thread 1");
    Thread t1 = new Thread(mt1);
    t1.start();    

    MinhaThread mt2 = new MinhaThread("Thread 2");
    Thread t2 = new Thread(mt2);
    t2.start();

    System.exit(0);
  }
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Exemplos Java Strings - Como remover um caractere de uma string usando o método deleteCharAt() da classe StringBuffer do Java

Quantidade de visualizações: 114 vezes
Neste exemplo mostrarei como podemos usar o método deleteCharAt() da classe StringBuffer para remover um determinado caractere de uma palavra, frase ou texto. Observe que a string original é modificada após uma chamada a este método.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Java");
    System.out.println("Original: " + frase); 
    
    frase.deleteCharAt(1); // exclui a primeira letra "a"
     
    System.out.println("Depois da remoção: " + frase);
     
    System.exit(0);
  }
}

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

Original: Java
Depois da remoção: Jva


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Um programa que lê dois números inteiros e mostra o menor

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

Escreva um programa Java que solicita dois números inteiros ao usuário e mostra o menor deles. Mostre uma mensagem informando se os dois números são iguais. Sua saída deverá ser parecida com:

Informe o primeiro número: 34
Informe o segundo número: 30
O menor número é: 30

Informe o primeiro número: 12
Informe o segundo número: 43
O menor número é: 12

Informe o primeiro número: 7
Informe o segundo número: 7
Os dois números são iguais.
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos solicitar os dois números inteiros
    System.out.print("Informe o primeiro número: ");
    int num1 = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o segundo número: ");
    int num2 = Integer.parseInt(entrada.nextLine());
    
    // o primeiro número é menor que o segundo?
    if(num1 < num2){
      System.out.println("O menor número é: " + num1);  
    }
    else if(num2 < num1){ // o segundo número é menor que o primeiro?
      System.out.println("O menor número é: " + num2);  
    }
    else{
      System.out.println("Os dois números são iguais.");  
    }
    
    System.out.println("\n");
  }
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Como comparar duas strings em Java usando o método equals() da classe String

Quantidade de visualizações: 147 vezes
Nesta dica mostrarei como usar o método equals() da classe String da linguagem Java para comparar duas palavras, frases ou texto. Este método retorna um valor true se as duas string forem iguais e false em caso contrário.

Veja o código para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    String s1 = "Gosto de Java";
    String s2 = "Gosto de Java";
     
    if(s1.equals(s2)){
      System.out.println("As duas strings sao iguais");
    }
    else{
      System.out.println("As duas strings não sao iguais");  
    }
    
    System.exit(0);
  }
}


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

As duas strings sao iguais


Vamos testar seus conhecimentos em

Aglomerantes

Você sabe que o gesso faz parte da família de aglomerantes simples. A obtenção do gesso se dá através:

A) Calcinação do calcário dolomítico.

B) Calcinação da gipsita natural.

C) Isolamento das impurezas do sulfato biidratado de cálcio.

D) Calcinação da sílica.

E) Calcinação de carbonatos de cálcio e de magnésio.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Topografia

Escalas

FGV-2015 - Em uma carta topográfica, uma ferrovia de 30 km foi representada por uma linha de 6 cm de comprimento. Assim, é correto afirmar que a escala dessa carta é:

A) 1:200.000.

B) 1:500.000.

C) 1:1.000.000.

D) 1:2.000.000.

E) 1:5.000.000.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual é a sintáxe correta para a criação de funções em JavaScript?

A) def calcular(){}

B) function calcular(){}

C) void calcular(){}

D) function:calcular(){}
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalação hidrossanitária: fundamentos e definições

Durante a execução das instalações hidrossanitárias de uma edificação, você deverá fornecer um documento contendo informações sobre os tipos de materiais que deverão ser adquiridos para essas instalações. Sobre esse documento, assinale a alternativa correta.

A) O documento é o perfil isométrico, que descreve e posiciona tecnicamente todos os tipos de materiais a serem empregados na instalação hidrossanitária.

B) O documento é o quantitativo de materiais, que traz quantidades e representações gráficas sobre os tipos de materiais a serem empregados na instalação.

C) O documento é a norma técnica brasileira, que traz recomendações sobre os tipos de materiais a serem empregados na instalação.

D) O documento é o memorial descritivo, que complementa as informações contidas nos demais componentes do projeto hidrossanitária.

E) O documento é o memorial de cálculo, que descreve de modo técnico e representa graficamente todos os requisitos dos tipos de materiais a serem empregados na instalação.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte trecho de um documento HTML

<p id="elem">Veja esse texto.</p>

Qual é a sintáxe JavaScript correta para alterar o conteúdo desse elemento HTML?

A) document.getElement("p").innerHTML = "texto";

B) document.getElementById("elem").innerHTML = "texto";

C) #elem.innerHTML = "texto";

D) document.getElementByName("p").innerHTML = "texto";
Verificar Resposta Estudar Cards Todas as Questões

Desafios, 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 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
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

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á 22 usuários muito felizes estudando em nosso site.