Java でリンク リストからノードを削除する

Sheeraz Gul 2023年10月12日
Java でリンク リストからノードを削除する

このチュートリアルでは、Java でリンク リストからノードを削除する方法を示します。

Java でリンク リストからノードを削除する

リンク リストは、リンク リスト データ構造を実装する Java の util パッケージのデータ構造の一種です。 リンクされたリストは線形データ構造と見なされ、各要素はアドレスとデータ部分を持つ個別のオブジェクトであり、要素は感染場所に保存されません。

リンクされたリストからノードを削除するには、特定のキーの最初の出現を削除するプロセスに従います。

リンクされたリストからノードを削除する手順は次のとおりです。

  • まず、指定されたノードの前のノードを見つける必要があります。 これは、ノードが削除される前にノードを見つけることを意味します。
  • 次のステップは、前のノードのテキストを変更することです。
  • 最後に、削除可能なノードのメモリを解放する必要があります。

これは、C の malloc() メソッドを使用してすべてのノードが動的に割り当てられる反復プロセスであるため、毎回 free() メソッドを呼び出してメモリを解放する必要があります。

Java で指定されたリンク リストからノードを削除する例を試してみましょう。

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();
    }
  }
}

上記のコードは、最初にノードをリンク リストに追加し、次にリストの最後からノードを削除します。 出力を参照してください。

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

関連記事 - Java Linked List