Technologieaustausch

JAVA-Lernen – Üben Sie die Verwendung von Java, um das „Entfernen verknüpfter Listenelemente“ zu implementieren.

2024-07-12

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

Frage:

Angesichts des Kopfknotens head einer verknüpften Liste und eines ganzzahligen Werts löschen Sie bitte alle Knoten in der verknüpften Liste, die Node.val == val erfüllen, und geben Sie den neuen Kopfknoten zurück.

Beispiel 1:

Eingabe: Kopf = [1,2,6,3,4,5,6], Wert = 6
Ausgabe: [1,2,3,4,5]
Beispiel 2:

Eingabe: head = [], val = 1
Ausgabe: []
Beispiel 3:

Eingabe: Kopf = [7,7,7,7], Wert = 7
Ausgabe: []
Hinweis:

Die Anzahl der Knoten in der Liste liegt im Bereich [0, 104]
1 <= Knotenwert <= 50
0 <= Wert <= 50

Antwortideen:

Der folgende Code verwendet Java, um das Problem des Entfernens von Elementen aus einer verknüpften Liste zu lösen:

  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. }

Die Idee dieses Codes ist: Erstellen Sie einen virtuellen Kopfknoten.dummy ', richten Sie seinen 'next'-Zeiger auf den Kopfknoten 'head' der ursprünglichen verknüpften Liste. Durchlaufen Sie dann die verknüpfte Liste durch eine Schleife. Wenn ein Knoten mit einem Wert gleich „val“ gefunden wird, wird er aus der verknüpften Liste gelöscht. Schließlich wird der „nächste“ Knoten von „dummy“ zurückgegeben, der nach dem Löschen des angegebenen Wertknotens der Kopfknoten der neuen verknüpften Liste ist.
(Der Artikel ist eine Zusammenfassung und Referenz einiger persönlicher Erfahrungen des Autors beim Erlernen von Java. Wenn es unangemessene oder falsche Stellen gibt, kritisieren und korrigieren Sie diese bitte. Wir werden hart daran arbeiten, sie zu korrigieren. Wenn es einen Verstoß gibt Bitte kontaktieren Sie den Autor, um den Beitrag zu löschen.)