Java 二重リンク リストは、データの保存以外の各ノードが 2 つのリンクを持つリンク リストの一種です。最初のリンクはリストの前のノードを指し、もう 1 つのリンクはリストの次のノードを指します。 DLL とも略される Double Linked List は、Single Linked List によく似ています。両方のリンク リストには、次のノードへのポインタと、ノードに格納される実際の値を表すデータ フィールドが含まれています。主な違いは、DLL にはリスト内の前のノードへのポインターが含まれていることです。つまり、DLL 内のノードは前のノードと次のノードの両方を認識します。この記事では、Java の二重リンクリストを見て、いくつかの例を調べ、その実装について学びます。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
Java の二重リンク リストには特定の構文はありませんが、「Java で二重リンク リストを宣言する方法」を参照してください。 Double Linked List の宣言を検討する前に、Double Linked List の実装の背後にある概念を見てみましょう。
二重リンクリスト内のノード:
Prev Node | Data | Next Node |
ここで、Prev Node と Next Node は、それぞれノードの前と次の要素へのポインターです。 「データ」は、データが保存される実際の要素です。
以下は、理解する必要がある重要な用語の一部です。
Java での二重リンクリストのノードの宣言:
class Node { public int data; public Node prev; public Node next; public void displayData() { //content of the function} }
ご覧のとおり、二重リンクリストの場合は追加の宣言または参照 (Node prev) があります。
以下は二重リンクリストで利用できる基本的な操作です。
以下は Java Double Linked List のさまざまな例です:
コード:
public class DLL { class Node{ public int data; public Node prevNode; public Node nextNode; public Node(int data) { this.data = data; } } Node headNode, tailNode = null; public void addDLLNode(int data) { Node newDLLNode = new Node(data); if(headNode == null) { headNode = tailNode = newDLLNode; headNode.prevNode = null; tailNode.nextNode = null; } else { tailNode.nextNode = newDLLNode; newDLLNode.prevNode = tailNode; tailNode = newDLLNode; tailNode.nextNode = null; } } public void displayNode() { Node currentNode = headNode; if(headNode == null) { System.out.println("Doubly Linked List is empty"); return; } System.out.println("Nodes in Doubly Linked List: "); while(currentNode != null) { System.out.print(currentNode.data + " "); currentNode = currentNode.nextNode; } } public static void main(String[] args) { DLL dLinkedList = new DLL(); dLinkedList.addDLLNode(9); dLinkedList.addDLLNode(7); dLinkedList.addDLLNode(5); dLinkedList.addDLLNode(3); dLinkedList.addDLLNode(1); dLinkedList.addDLLNode(3); dLinkedList.addDLLNode(5); dLinkedList.addDLLNode(7); dLinkedList.displayNode(); } }
出力:
ここでは、二重リンクリストを宣言し、DLL の値を表示する Node クラスを作成しています。
コード:
public class DLL { class Node{ public int data; public Node prevNode; public Node nextNode; public Node(int data) { this.data = data; } } public void displayNode() { Node tempNode = headNode; while (tempNode != null) { System.out.print(tempNode.data + "–>"); tempNode = tempNode.nextNode; } System.out.println("END"); } Node headNode, tailNode = null; public void addNode(int data) { Node newNode = new Node(data); if(headNode == null) { headNode = tailNode = newNode; headNode.prevNode = null; tailNode.nextNode = null; } else { tailNode.nextNode = newNode; newNode.prevNode = tailNode; tailNode = newNode; tailNode.nextNode = null; } } public void deleteInitialNode() { if(headNode == null) { System.out.println("Doubly Linked List is empty"); return; } else { if(headNode != tailNode) { headNode = headNode.nextNode; } else { headNode = tailNode = null; } } } void printNode() { Node currNode = headNode; if(headNode == null) { System.out.println("Doubly Linked List is empty"); return; } while(currNode != null) { System.out.print(currNode.data + " "); currNode = currNode.nextNode; } System.out.println(); } public static void main(String[] args) { DLL doublyLL = new DLL(); doublyLL.addNode(3); doublyLL.addNode(5); doublyLL.addNode(7); doublyLL.addNode(9); doublyLL.addNode(11); System.out.println("Doubly linked list: "); doublyLL.printNode(); doublyLL.addNode(15); doublyLL.addNode(17); doublyLL.addNode(19); doublyLL.deleteInitialNode(); doublyLL.addNode(21); System.out.println("Doubly Linked List after deleting at the beginning: "); doublyLL.printNode(); } }
出力:
ここでは、リンクされたリストの先頭でノードが削除されます。つまり、ノード 3 が削除/削除されます。
DLL は、順方向と逆方向にトラバースできます。削除するノード ポインターが指定されている場合、DLL での削除操作はより効率的になります。 DLL 内のすべてのノードには、前のポインター用に追加のスペースが必要です。すべての操作には追加のポインターを維持する必要があります。
これで、「Java 二重リンクリスト」のトピックを終了します。 Java Double Linked Listとは何なのか、そしてそれがJavaプログラミングでどのように実装されるのかをいくつかの例とともに見てきました。また、二重リンク リストのアルゴリズムについても説明し、DLL に適用できるいくつかの操作をリストしました。最初の操作で挿入と削除を実装しました。同様に、作業できる他の操作も利用できます。
以上がJava 二重リンクリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。