Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Como inserir um nó em qualquer posição de uma lista duplamente encadeada em Java - Escreva um programa Java que - Exercícios Resolvidos de JavaQuantidade de visualizações: 643 vezes |
Pergunta/Tarefa: Escreva um programa Java que cria uma lista dinâmica duplamente ligada (lista duplamente encadeada) e peça para o usuário inserir 5 elementos do tipo inteiro. Em seguida peça para o usuário informar um índice e um novo elemento e insira tal elemento no índice informado. Finalmente faça a varredura da lista e mostre os elementos, antes e depois da nova inserção. Faça a validação dos índices para que ele não saia da faixa permitida. Sua saída deve ser parecida com: Inserindo na lista duplamente encadeada Informe o 1.o valor: 6 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: 6 9 1 3 7 Inserindo um elemento no índice k Informe o índice desejado: 2 Informe o valor do nó: 4 Valores na lista duplamente ligada: 6 9 4 1 3 7 Na saída podemos ver que o índice 2 corresponde ao terceiro elemento da lista duplamente encadeada. Por isso o valor 1 foi empurrado para a frente para abrir espaço para o valor 4. Se o índice 0 fosse informado, o número 6 seria empurrado para a frente e o nó com valor 4 passaria a ser o início da lista duplamente ligada. 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 // duplamente ligada int valor; System.out.println("Inserindo na lista duplamente encadeada\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 // duplamente encadeada inserirFinal(valor); } // vamos exibir os valores na lista ligada System.out.print("\nValores na lista duplamente encadeada: "); exibirLista(); // vamos inserir um novo elemento no índice informado System.out.println("\nInserindo um elemento no índice k\n"); System.out.print("Informe o índice desejado: "); int indice = Integer.parseInt(entrada.nextLine()); // o índice é válido? if ((indice < 0) || (indice > tamanhoLista() - 1)) { System.out.println("O índice é inválido."); } else { // vamos inserir o novo nó no índice indicado System.out.print("Informe o valor do nó: "); valor = Integer.parseInt(entrada.nextLine()); inserirIndice(indice, valor); // vamos exibir os valores na lista ligada System.out.print("\nValores na lista duplamente ligada: "); exibirLista(); } } // função que permite inserir um novo nó em // índice informado pelo usuário public static void inserirIndice(int indice, 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 // temos que inserir no início da lista? if (indice == 0) { // 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 { // a lista duplamente ligada possui um ou mais nós. // vamos inserir no início, antes deles // 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; } } else { // vamos inserir no índice específicado, talvez no // meio ou um nó antes do final da lista // duplamente encadeada // primeiro apontamos para o início da lista No temp = inicio; // encontramos o índice desejado. Note que paramos // um nó antes da posição a ser inserida for (int i = 1; i < indice; i++) { temp = temp.proximo; } // agora que paramos um nó antes da posição que vamos // inserir, o campo proximo do novo nó aponta para // o proximo do nó temporário novo.proximo = temp.proximo; // o campo anterior do novo nó aponta para o // nó temporário novo.anterior = temp; // o campo anterior do nó à frente do novo nó // aponta para ele (o novo nó) novo.proximo.anterior = novo; // e o próximo do nó temporário aponta para // o novo nó temp.proximo = novo; } } // 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; } } // esta função permite retornar a quantidade // de nós na lista duplamente encadeada public static int tamanhoLista() { // para retornar a quantidade de nós int quantidade = 0; // apontamos para o início da lista No temp = inicio; // a lista está vazia? if (inicio == null) { return 0; } // enquanto temp for diferente de null while(temp != null) { // aumentamos a quantidade quantidade++; // e pulamos para o nó seguinte temp = temp.proximo; } // retorna o tamanho da lista duplamente encadeada return quantidade; } } |
![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como retornar o primeiro elemento de um array em JavaQuantidade de visualizações: 522 vezes |
Pergunta/Tarefa: Escreva um programa Java que mostra como acessar e retornar o primeiro elemento de um array (vetor) Java. Sua saída deverá ser parecida com: Os elementos do vetor são: [9, 5, 3, 2, 4, 8] O primeiro elemento do array é: 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.Arrays; public class Estudos { public static void main(String[] args) { // vamos criar um array de inteiros int valores[] = {9, 5, 3, 2, 4, 8}; System.out.println("Os elementos do vetor são: " + Arrays.toString(valores)); // agora vamos retornar o primeiro elemento do vetor int primeiro = valores[0]; // e mostramos o resultado System.out.println("O primeiro elemento do array é: " + primeiro); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercício Resolvido de Java - Como calcular o restante de um salário após o pagamento de duas contas com jurosQuantidade de visualizações: 4762 vezes |
Pergunta/Tarefa: Cintia acaba de receber seu salário mas precisa pagar duas contas atrasadas. Por causa do atraso, ela deverá pagar multa de 2% sobre cada conta. Faça um programa que leia o valor do salário e das duas contas e que calcule e mostre quanto restará do salário de Cintia. Sua saída deverá ser parecida com: Informe o salário: 1350 Valor da primeira conta: 140 Valor da segunda conta: 300 Total das contas sem juros: 440.0 Total dos juros: 8.8 Total das contas com juros: 448.8 Sobra do salário: 901.2 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; public class Estudos { public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir que o usuário informe o valor do salário e das duas contas System.out.print("Informe o salário: "); double salario = Double.parseDouble(entrada.nextLine()); System.out.print("Valor da primeira conta: "); double conta1 = Double.parseDouble(entrada.nextLine()); System.out.print("Valor da segunda conta: "); double conta2 = Double.parseDouble(entrada.nextLine()); // total a ser pago nas duas contas sem os juros double totalContas = conta1 + conta2; // calcula os juros double totalJuros = totalContas * 0.02; // total a ser pago com juros double totalContasComJuros = totalContas + totalJuros; // sobra do salário double sobraSalario = salario - totalContasComJuros; // mostra os resultados System.out.println("\nTotal das contas sem juros: " + totalContas); System.out.println("Total dos juros: " + totalJuros); System.out.println("Total das contas com juros: " + totalContasComJuros); System.out.println("Sobra do salário: " + sobraSalario); System.out.println("\n"); } } |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Manipulação de arquivos em Java - Como obter o tamanho de um arquivo em bytes usando o método length() da classe File do JavaQuantidade de visualizações: 12873 vezes |
A classe File, do pacote java.io da linguagem Java, nos fornece o método length(), que retorna o tamanho de um arquivo em byes. O retorno é do tipo long. Veja como podemos usá-lo no código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ File arquivo = new File("c:\\estudos_java\\lago.jpg"); // Obtém o tamanho do arquivo em bytes long tam = arquivo.length(); System.out.println("Tamanho do arquivo em bytes: " + tam); } } Ao executar este código nós teremos o seguinte resultado: Tamanho do arquivo em bytes: 143060 |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
![]() 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 |
![]() 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 |