Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Como remover em qualquer posição de uma lista ligada em Java - Escreva um programa Java que cria uma lista dinamicamente encadeada - Exercícios Resolvidos de JavaQuantidade de visualizações: 687 vezes |
Pergunta/Tarefa: Escreva um programa Java que cria uma lista dinamicamente encadeada (lista singularmente encadeada) e pede para o usuário inserir 5 elementos do tipo inteiro. Em seguida peça para o usuário informar um índice e remova o nó presente no índice informado. Faça a validação dos índices para que ele não saia da faixa permitida. Sua saída deve ser parecida com: Inserindo 5 valores na lista Informe o 1.o valor: 9 Informe o 2.o valor: 2 Informe o 3.o valor: 4 Informe o 4.o valor: 6 Informe o 5.o valor: 1 Valores na lista: 9 -> 2 -> 4 -> 6 -> 1 -> null Removendo um elemento no índice k Informe o índice desejado: 3 O nó removido foi: 6 Valores na lista: 9 -> 2 -> 4 -> 1 -> null Na saída podemos ver que a lista ligada possui inicialmente os valores 9, 2, 4, 6 e 1. Em seguida o índice 3 é informado, o que indica que o quarto nó deve ser removido, já que os índices começam em 0. Depois da remoção do nó com o valor 6, os elementos da lista são 9, 2, 4 e 1. 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 elemento no índice informado System.out.println("\nRemovendo 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 remover o nó no índice indicado No removido = removerIndice(indice); System.out.println("O nó removido foi: " + removido.valor); // vamos exibir os valores na lista ligada System.out.print("\nValores na lista: "); exibirLista(); } } // função que permite remover um nó em uma determinada // posição da lista ligada // O índice deve variar entre 0 e o tamanho da lista - 1 public static No removerIndice(int indice) { // para retornar o nó removido No removido; // a lista está vazia? if(inicio == null){ return null; } // devemos remover no início? else if(indice == 0){ // primeiro apontamos para o início da lista removido = inicio; // o início da lista aponta para o seu próximo inicio = inicio.proximo; // retornamos o nó removido return removido; } // devemos remover em outra posição da lista else { // aponta para o início da lista No temp = inicio; // repetimos até encontrar a posição desejada for (int i = 1; i < indice; i++){ // temp avança para o seu próximo nó temp = temp.proximo; } // o proximo do nó atual aponta para o próximo do seu próximo removido = temp.proximo; temp.proximo = temp.proximo.proximo; // retorna o nó removido return removido; } } // função que permite adicionar um nó no final da // lista ligada public static No 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; } // e retornamos o início da lista return inicio; } // 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"); } } // função que retorna a quantidade de nós na lista ligada public static int tamanhoLista() { int tamanho = 0; // vamos apontar para o início da lista No temp = inicio; // a lista está vazia? if (temp == null) { return 0; } else { // esse laço se repete enquanto temp for // diferente de null while (temp != null) { // vamos incrementar o tamanho tamanho++; // avança para o próximo nó temp = temp.proximo; } } return tamanho; } } |
![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Como calcular a soma, o produto, a diferença e o quociente de dois números inteiros informados pelo usuárioQuantidade de visualizações: 1333 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar dois número inteiros. Em seguida mostre a soma, o produto, a diferença e o quociente dois dois números informados. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 3 A soma dos números é: 11 O produto dos números é: 24 A diferença dos números é: 5 O quociente dos números é: 2.66667 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[]){ // variáveis usadas na resolução do problema int n1, n2, soma, produto, diferenca; double quociente; // vamos ler os dois números Scanner leitura = new Scanner(System.in); System.out.print("Informe o primeiro número: "); n1 = Integer.parseInt(leitura.nextLine()); System.out.print("Informe o segundo número: "); n2 = Integer.parseInt(leitura.nextLine()); // vamos somar os dois números soma = n1 + n2; // vamos calcular o produto produto = n1 * n2; // vamos calcular a diferença diferenca = n1 - n2; // vamos calcular o quociente quociente = n1 / (n2 * 1.0); // vamos mostrar os resultados System.out.println("A soma dos números é: " + soma); System.out.println("O produto dos números é: " + produto); System.out.println("A diferenca dos números é: " + diferenca); System.out.println("O quociente dos números é: " + quociente); } } |
Java ::: Dicas & Truques ::: Mouse e Teclado |
Computação Gráfica em Java - Código completo Java Swing para um programa de desenho usando eventos do mouseQuantidade de visualizações: 31417 vezes |
Nesta dica apresento um código completo para um programa de desenho usando os eventos os mouse, feito em Java Swing. Veja que o único evento que tivemos que implementar foi mouseDragged, que é disparado quando o usuário arrasta o mouse com o botão direito ou esquerdo pressionado. Observe também a criação de uma classe JPanel personalizada que servirá como painel de desenho. Fique atento à forma como subscrevemos o método paintComponent() na classe PainelDesenho para obtermos o objeto Graphics que nos permitirá desenhar na superfície do JPanel. O resultado é exibido na imagem abaixo: ![]() E aqui está o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Estudos extends JFrame{ public Estudos(){ super("Eventos do Mouse e Teclado"); Container c = getContentPane(); PainelDesenho painel = new PainelDesenho(); c.add(painel, BorderLayout.CENTER); c.add(new JLabel("Arraste o mouse para desenhar..." ), BorderLayout.SOUTH ); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class PainelDesenho extends JPanel{ private int quantPontos = 0; private Point pontos[] = new Point[10000]; public PainelDesenho(){ this.setBackground(Color.WHITE); this.addMouseMotionListener( new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e){ if(quantPontos < pontos.length){ pontos[quantPontos] = e.getPoint(); quantPontos++; repaint(); } } } ); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); for(int i = 0 ; i < quantPontos; i++) g.fillOval(pontos[i].x, pontos[i].y, 4, 4); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria Analítica e Álgebra Linear |
Exercício Resolvido de Java - Como calcular o quadrante de uma coordenada cartesiana em JavaQuantidade de visualizações: 615 vezes |
Pergunta/Tarefa: O Plano Cartesiano, ou Sistema de Coordenadas Cartesianas, é formado por duas retas reais perpendiculares, ou seja, o ângulo entre elas é de 90 graus. Essas retas determinam um único plano, que é denominado como sistema ortogonal de coordenadas cartesianas ou somente plano cartesiano. No ano de 1637, René Descartes teve a brilhante ideia de relacionar álgebra e geometria, dando início à conhecida geometria analítica, método que possibilita descrever a geometria utilizando uma menor quantidade de diagramas e desenhos. Apesar de os créditos dessa descoberta serem dados a Descartes, Pierre de Fermat já conhecia e utilizava alguns conceitos de geometria analítica, logo o plano cartesiano. Há quatro quadrantes no Sistema de Coordenadas Cartesianas, conforme a figura a seguir: ![]() Como podemos ver, no primeiro quadrante, tanto o x quanto o y são positivos. No segundo quadrante o x é negativo e o y é positivo. No terceiro quadrante, tanto o x quanto o y são negativos. Por fim, no quarto quadrante, o x é positivo e o y é negativo. Escreva um programa Java que pede para o usuário informar os valores x e y de uma coordenada cartesiana e informe em qual quadrante essa coordenada se situa. Se os valores de x e y forem zero, informe que o ponto se situa na origem do plano cartesiano. Sua saída deverá ser parecida com: Informe o valor x da coordenada: 12 Informe o valor y da coordenada: -7 A coordenada (12,-7) está no Quarto Quadrante (+,-) Veja a resolução comentada deste exercício em 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); // variáveis usadas na resolução do problema int x, y; // vamos pedir para o usuário informar as coordenadas System.out.print("Informe o valor x da coordenada: "); x = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o valor y da coordenada: "); y = Integer.parseInt(entrada.nextLine()); // a coordenada está no primeiro quadrante? if (x > 0 && y > 0){ System.out.println("A coordenada (" + x + "," + y + ") está no Primeiro Quadrante (+,+)"); } // a coordenada está no segundo quadrante? else if (x < 0 && y > 0){ System.out.println("A coordenada (" + x + "," + y + ") está no Segundo Quadrante (-,+)"); } // a coordenada está no terceiro quadrante? else if (x < 0 && y < 0){ System.out.println("A coordenada (" + x + "," + y + ") está no Terceiro Quadrante (-,-)"); } // a coordenada está no quarto quadrante? else if (x > 0 && y < 0){ System.out.println("A coordenada (" + x + "," + y + ") está no Quarto Quadrante (+,-)"); } // a coordenada está na origem else{ System.out.println("A coordenada (" + x + "," + y + ") está na origem"); } } } |
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 |
R - R para Matemática e Estatística - Como calcular desvio padrão usando a função sd() da linguagem R |
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 |