Entfernen Sie einen Knoten aus einer verknüpften Liste in Java

Sheeraz Gul 12 Oktober 2023
Entfernen Sie einen Knoten aus einer verknüpften Liste in Java

Dieses Tutorial zeigt, wie Sie einen Knoten aus einer verknüpften Liste in Java entfernen.

Entfernen Sie einen Knoten aus einer verknüpften Liste in Java

Die verknüpfte Liste ist eine Art Datenstruktur aus dem util-Paket von Java, das die Datenstruktur der verknüpften Liste implementiert. Die verknüpfte Liste wird als lineare Datenstruktur betrachtet, bei der jedes Element ein separates Objekt mit einer Adresse und einem Datenteil ist und kein Element an der ansteckenden Stelle gespeichert wird.

Das Löschen eines Knotens aus einer verknüpften Liste kann erfolgen, indem Sie dem Prozess folgen, bei dem wir das erste Vorkommen des angegebenen Schlüssels löschen.

Hier sind die Schritte zum Löschen eines Knotens aus einer verknüpften Liste:

  • Zuerst müssen wir einen vorherigen Knoten des gegebenen Knotens finden. Das bedeutet, den Knoten zu finden, bevor der Knoten gelöscht wird.
  • Der nächste Schritt besteht darin, den Text des vorherigen Knotens zu ändern.
  • Schließlich müssen wir den Speicher für den löschbaren Knoten freigeben.

Dies ist ein iterativer Prozess, bei dem jeder Knoten mit der Methode malloc() von C dynamisch zugewiesen wird, also müssen wir jedes Mal die Methode free() aufrufen, um den Speicher freizugeben.

Versuchen wir ein Beispiel, um einen Knoten aus der angegebenen verknüpften Liste in Java zu löschen:

package delftstack;

public class Example {
  class DemoNode {
    int NodeData;
    DemoNode NextNode;

    public DemoNode(int NodeData) {
      this.NodeData = NodeData;
      this.NextNode = null;
    }
  }

  // head and tail node
  public DemoNode HeadNode = null;
  public DemoNode TailNode = null;

  // to add new nodes
  public void Add_Node(int NodeData) {
    DemoNode NewNode = new DemoNode(NodeData);
    if (HeadNode == null) {
      HeadNode = NewNode;
      TailNode = NewNode;
    } else {
      TailNode.NextNode = NewNode;
      TailNode = NewNode;
    }
  }

  // To delete nodes
  public void DeleteNode() {
    if (HeadNode == null) {
      System.out.println("List is empty");
      return;
    } else {
      // Checks if the list contains only one element
      if (HeadNode != TailNode) {
        DemoNode current = HeadNode;
        // Iterate through the list till the second last element
        while (current.NextNode != TailNode) {
          current = current.NextNode;
        }
        TailNode = current;
        TailNode.NextNode = null;
      } else {
        HeadNode = TailNode = null;
      }
    }
  }

  // To display the node
  public void DisplayNode() {
    DemoNode CurrentNode = HeadNode;
    if (HeadNode == null) {
      System.out.println("List is empty");
      return;
    }
    while (CurrentNode != null) {
      System.out.print(CurrentNode.NodeData + " ");
      CurrentNode = CurrentNode.NextNode;
    }
    System.out.println();
  }

  public static void main(String[] args) {
    Example Linked_List = new Example();

    // Adds nodes to the list
    Linked_List.Add_Node(1);
    Linked_List.Add_Node(2);
    Linked_List.Add_Node(3);
    Linked_List.Add_Node(4);

    System.out.println("The Original List is: ");
    Linked_List.DisplayNode();

    while (Linked_List.HeadNode != null) {
      Linked_List.DeleteNode();

      System.out.println("The list after Deleting a Node: ");
      Linked_List.DisplayNode();
    }
  }
}

Der obige Code fügt zuerst die Knoten zur verknüpften Liste hinzu und löscht dann den Knoten am Ende der Liste. Siehe die Ausgabe:

The Original List is:
1 2 3 4
The list after Deleting a Node:
1 2 3
The list after Deleting a Node:
1 2
The list after Deleting a Node:
1
The list after Deleting a Node:
List is empty
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Linked List