Java Double Linked List ist eine Art verknüpfte Liste, bei der jeder Knoten außer der Speicherung von Daten zwei Links hat. Der erste Link zeigt auf den vorherigen Knoten und der andere Link zeigt auf den nächsten Knoten der Liste. Eine doppelt verknüpfte Liste, auch als DLL abgekürzt, ähnelt stark einer einfach verknüpften Liste. Beide verknüpften Listen enthalten einen Zeiger auf den nächsten Knoten und ein Datenfeld zur Darstellung des tatsächlichen Werts, der im Knoten gespeichert werden soll. Der Hauptunterschied besteht darin, dass DLL einen Zeiger auf den vorherigen Knoten in der Liste enthält, d. h. Knoten in DLL kennen sowohl den vorherigen als auch den nächsten Knoten. In diesem Artikel werfen wir einen Blick auf die doppelt verknüpfte Liste in Java, untersuchen einige Beispiele und lernen ihre Implementierung kennen.
WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 ProbetestsStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Es gibt keine bestimmte Syntax für die doppelt verknüpfte Liste in Java, aber wir werden sehen, wie man die doppelt verknüpfte Liste in Java deklariert. Bevor wir uns mit der Deklaration einer doppelt verknüpften Liste befassen, wollen wir uns das Konzept hinter der Implementierung einer doppelt verknüpften Liste ansehen.
Knoten in doppelt verknüpfter Liste:
Prev Node | Data | Next Node |
Hier sind „Vorheriger Knoten“ und „Nächster Knoten“ Zeiger auf das vorherige bzw. nächste Element des Knotens. „Daten“ ist das eigentliche Element, in dem Daten gespeichert werden.
Im Folgenden finden Sie einige wichtige Begriffe, die wir verstehen müssen,
Knotendeklaration für doppelt verknüpfte Liste in Java:
class Node { public int data; public Node prev; public Node next; public void displayData() { //content of the function} }
Wie wir sehen können, gibt es im Fall einer doppelt verknüpften Liste eine zusätzliche Deklaration oder einen Verweis (Node prev).
Im Folgenden sind die grundlegenden Operationen aufgeführt, die für doppelt verknüpfte Listen verfügbar sind.
Im Folgenden finden Sie verschiedene Beispiele für doppelt verknüpfte Java-Listen:
Code:
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(); } }
Ausgabe:
Hier erstellen wir also eine Node-Klasse, um eine doppelt verknüpfte Liste zu deklarieren und die Werte der DLL anzuzeigen.
Code:
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(); } }
Ausgabe:
Hier wird also der Knoten am Anfang der verknüpften Liste gelöscht, d. h. Knoten 3 wird gelöscht/entfernt.
DLL kann in Vorwärts- und Rückwärtsrichtung durchlaufen werden. Der Löschvorgang in der DLL kann effizienter sein, wenn der zu löschende Knotenzeiger angegeben wird. Jeder Knoten in der DLL benötigt zusätzlichen Platz für den vorherigen Zeiger. Für alle Vorgänge muss ein zusätzlicher Zeiger verwaltet werden.
Damit schließen wir unser Thema „Java Double Linked List“ ab. Wir haben anhand einiger Beispiele gesehen, was eine doppelt verknüpfte Java-Liste ist und wie sie in der Java-Programmierung implementiert wird. Wir haben auch den Algorithmus für doppelt verknüpfte Listen gesehen und einige auf DLL anwendbare Vorgänge aufgelistet. Wir haben die Vorgänge „Einfügen“ und „Auf Anhieb löschen“ implementiert. Darüber hinaus stehen Ihnen auch andere Vorgänge zur Verfügung, an denen Sie arbeiten können.
Das obige ist der detaillierte Inhalt vonDoppelt verknüpfte Java-Liste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!