logo

Javaリストノード

Java では、ListNode はリンク リストを効率的に実装するために使用される重要なデータ構造です。リンク リストはノードで構成される動的データ構造であり、各ノードは値とリスト内の次のノードへの参照を保持します。この記事は、Java の ListNode の包括的な概要を提供し、その機能、利点、効果的な利用方法を説明することを目的としています。

リストノードとは何ですか?

ListNode は、リンクされたリスト内の単一のノードを表します。通常、これには 2 つの主要なコンポーネントが含まれます。1 つはノードに格納されている値またはデータ、もう 1 つはリスト内の次のノードへの参照 (またはリンク) です。これらのノードを接続することで、さまざまな操作に対応できる柔軟かつ効率的なデータ構造を構築できます。

Javaでのデザインパターン

Java での ListNode の定義:

Java では、ListNode は通常、値を格納するデータ フィールドと次のノードを参照する次のフィールドという 2 つのインスタンス変数を持つクラスとして実装されます。単純な ListNode クラスの例を次に示します。

 public class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } } 

ListNode の操作:

    リンクリストの作成:

リンク リストを作成するには、各ノードの ListNode オブジェクトをインスタンス化し、ノード間の接続を確立します。以下に例を示します。

 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; 
    リンクされたリストを横断する:

リンクされたリストを反復するには、ヘッド ノード (リストの最初のノード) から開始して、最後 (次の参照が null になる) に到達するまで次の参照をたどります。上記のリストをたどる例を次に示します。

Java文字列インデックス
 ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } 
    ノードの追加と削除:

ListNode を使用すると、リンクされたリスト内のさまざまな位置でノードを追加および削除できます。次の参照を調整することで、効率的にノードを挿入または削除できます。これらの操作は、頻繁に変更を必要とする動的データ構造に役立ちます。

追加の操作:

ListNode は、特定の値の検索、リンクされたリストの長さの検索、逆順や並べ替えなどのリストに対するさまざまな操作の実行など、他の操作をサポートします。

ListNode と LinkedList の利点:

    ダイナミックサイズ:リンクされたリストは、固定サイズの配列とは異なり、要素が追加または削除されると動的に拡大または縮小できます。効率的な挿入と削除:ListNode を使用すると、リスト内の任意の位置で効率的な挿入と削除が可能になり、データ管理が柔軟になります。メモリ効率:リンク リストは、各ノードに必要な量のみを使用してメモリを動的に割り当てるため、大規模なデータ セットやさまざまなデータ セットに適しています。多用途性:リンク リストは、単一リンク (各ノードが次のノードを指す) または二重リンク (各ノードが次と前のノードを指す) にすることができ、メモリ使用量と機能の間にさまざまなトレードオフを提供します。

Java の ListNode データ構造は、リンク リストを実装するための強力な基盤を提供します。 ListNode とそれに関連する操作を利用することで、開発者は動的データを効率的に処理し、複雑な操作を実行し、汎用性の高いデータ構造を構築できます。 ListNode の概念を理解して習得すると、Java プログラミングで問題を解決し、効率的なアルゴリズムを設計する能力が大幅に向上します。

ListNode データ構造を示し、リンク リストに対して基本的な操作を実行する Java プログラムの例を次に示します。

LinkedListExample.java

キーボードにはキーが何個ありますか
 class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } } public class LinkedListExample { public static void main(String[] args) { // Creating a linked list: 10 -> 20 -> 30 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; // Traversing the linked list and printing the values System.out.println('Linked List:'); ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 20 30 // Adding a new node: 15 -> 20 -> 30 ListNode newNode = new ListNode(15); newNode.next = node2; node1.next = newNode; // Traversing the updated linked list System.out.println('Updated Linked List:'); current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 15 20 30 // Removing a node: 10 -> 15 -> 30 node1.next = newNode.next; // Traversing the modified linked list System.out.println('Modified Linked List:'); current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 20 30 } } 

出力:

 Linked List: 10 20 30 Updated Linked List: 10 15 20 30 Modified Linked List: 10 20 30