Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Como inserir um nó no início de uma lista duplamente encadeada em Java - Escreva um programa Java que pede para o usuário - Lista de Exercícios Resolvidos de JavaQuantidade de visualizações: 881 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar vários valores inteiros e insira-os no início 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 início da lista Informe o valor (-1 para sair): 9 Informe o valor (-1 para sair): 2 Informe o valor (-1 para sair): 6 Informe o valor (-1 para sair): 1 Informe o valor (-1 para sair): 4 Informe o valor (-1 para sair): -1 Nós da lista duplamente encadeada: 4 1 6 2 9 Veja a resolução comentada deste exercício usando 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; // 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 início 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 início da lista // duplamente encadeada inserirInicio(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 // início de uma lista duplamente encadeada public static void inserirInicio(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 { // vamos adicionar o novo nó antes do início // da lista duplamente encadeada // o campo proximo do novo nó aponta para o // início da lista novo.proximo = inicio; // o campo anterior do início da lista aponta // para o novo nó inicio.anterior = novo; // e finalmente o início da lista aponta para o // novo nó inicio = 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; } } } |
![]() |
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 |