Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Como remover um nó no início de uma lista duplamente encadeada em Java - Escreva um programa Java que cria uma lista - Desafio de Programação Resolvido em JavaQuantidade de visualizações: 956 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que cria uma lista dinâmica duplamente encadeada (lista duplamente ligada) e peça para o usuário inserir 5 elementos do tipo inteiro. Em seguida faça a remoção do nó no início da lista e retorne o seu valor. Sua saída deve ser parecida com: Inserindo valores na lista duplamente ligada: Informe o 1.o valor: 4 Informe o 2.o valor: 9 Informe o 3.o valor: 1 Informe o 4.o valor: 3 Informe o 5.o valor: 7 Valores na lista duplamente encadeada: 4 9 1 3 7 Removendo no início da lista O nó removido foi: 4 Valores na lista duplamente ligada novamente: 9 1 3 7 Na saída podemos ver que a lista contém os valores 4, 9, 1, 3 e 7. Depois que o nó no início é removido, os elementos da lista ficam 9, 1, 3 e 7. 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 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);
// vamos inserir 5 valores inteiros na lista ligada
int valor;
System.out.println("Inserindo valores na lista duplamente ligada:\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 duplamente ligada
System.out.print("\nValores na lista duplamente encadeada: ");
exibirLista();
// vamos remover o nó no início da lista duplamente ligada
System.out.println("\nRemovendo no início da lista");
No removido = removerInicio();
System.out.println("O nó removido foi: " +
removido.valor);
// vamos exibir os valores na lista duplamente ligada
System.out.print("\nValores na lista duplamente ligada novamente: ");
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;
}
}
// função que permite remover o nó no início de uma lista
// duplamente ligada em Java
public static No removerInicio() {
// primeiro apontamos para o início da lista
No no = inicio;
// a lista está vazia?
if (no != null) {
// o início da lista aponta para o seu próximo
inicio = inicio.proximo;
// é o último nó da lista?
if (inicio != null) {
inicio.anterior = null;
}
}
// retorna o nó removido ou null no caso da lista vazia
return no;
}
// 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 |
|
JavaScript - Como resolver uma equação do segundo grau em JavaScript - Como calcular Bhaskara em JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





