Compartilhamento de tecnologia

Aprendizagem JAVA - pratique o uso de Java para implementar a "remoção de elementos de lista vinculada"

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

pergunta:

Dado o nó principal de uma lista vinculada e um valor inteiro, exclua todos os nós na lista vinculada que satisfaçam Node.val == val e retorne o novo nó principal.

Exemplo 1:

Entrada: cabeça = [1,2,6,3,4,5,6], val = 6
Saída: [1,2,3,4,5]
Exemplo 2:

Entrada: cabeça = [], val = 1
Saída: []
Exemplo 3:

Entrada: cabeça = [7,7,7,7], val = 7
Saída: []
dica:

O número de nós na lista está no intervalo [0, 104]
1 <= Nó.val <= 50
0 <= valor <= 50

Idéias de resposta:

A seguir está o código que usa Java para resolver o problema de remoção de elementos de uma lista vinculada:

  1. class ListNode {
  2. int val;
  3. ListNode next;
  4. ListNode(int val) {
  5. this.val = val;
  6. }
  7. }
  8. public class RemoveLinkedListElements {
  9. public ListNode removeElements(ListNode head, int val) {
  10. // 创建一个虚拟头节点,方便处理头节点可能被删除的情况
  11. ListNode dummy = new ListNode(0);
  12. dummy.next = head;
  13. ListNode curr = dummy;
  14. while (curr.next!= null) {
  15. if (curr.next.val == val) {
  16. curr.next = curr.next.next;
  17. } else {
  18. curr = curr.next;
  19. }
  20. }
  21. return dummy.next;
  22. }
  23. public static void main(String[] args) {
  24. // 构建链表
  25. ListNode head = new ListNode(1);
  26. ListNode node2 = new ListNode(2);
  27. ListNode node3 = new ListNode(6);
  28. ListNode node4 = new ListNode(3);
  29. ListNode node5 = new ListNode(4);
  30. ListNode node6 = new ListNode(5);
  31. ListNode node7 = new ListNode(6);
  32. head.next = node2;
  33. node2.next = node3;
  34. node3.next = node4;
  35. node4.next = node5;
  36. node5.next = node6;
  37. node6.next = node7;
  38. RemoveLinkedListElements solution = new RemoveLinkedListElements();
  39. ListNode newHead = solution.removeElements(head, 6);
  40. // 打印移除指定值后的链表
  41. while (newHead!= null) {
  42. System.out.print(newHead.val + " ");
  43. newHead = newHead.next;
  44. }
  45. }
  46. }

A ideia deste código é: criar um nó principal virtual 'fictício ', aponte seu ponteiro 'próximo' para o nó principal 'cabeça' da lista vinculada original. Em seguida, percorra a lista vinculada por meio de um loop e, quando um nó com valor igual a 'val' for encontrado, ele será excluído da lista vinculada. Finalmente, retorne o nó 'próximo' de 'fictício', que é o nó principal da nova lista vinculada após excluir o nó de valor especificado.
(O artigo é um resumo e referência de algumas experiências pessoais do autor no processo de aprendizagem Java. Se houver algum lugar inadequado ou errado, por favor critique e corrija. Trabalharemos muito para corrigi-lo. Se houver alguma infração , entre em contato com o autor para excluir a postagem.)