Java verlinkte Liste doppelt verknüpft

Java verlinkte Liste doppelt verknüpft

Eine verknüpfte Liste ist eine Art von Standarddatenstruktur, die aus mehreren benachbarten Knoten besteht. Jeder Knoten schützt die Informationen und die Adresse des Clusters, nachdem es in der. Eine doppelt verknüpfte Liste ist eine Variation der verknüpften Liste. Der Inhalt und der zusätzliche Zeiger, der als vorheriger Zeiger bezeichnet wird, die in der einzelnen verknüpften Liste vorhanden sind. Mit anderen Worten, die doppelt verknüpfte Liste kann Ihnen die Möglichkeit geben, in beide Richtungen zu wechseln, i.e. rückwärts und vorwärts, während die einzig verknüpfte Liste nur in Richtung Vorwärtsrichtung bewegt. In diesem Leitfaden werden wir diskutieren, wie wir eine doppelt gebundene Liste in der Java-Sprache erstellen können.

Beispiel 01:

Erste Schritte mit dem ersten Java -Beispiel dieses Artikels, wir werden sehen, wie eine doppelt verknüpfte Liste innerhalb weniger Sekunden in der Java -Programmierung mit einigen Codezeilen erstellt werden kann. Der unten angegebene Code kann insbesondere in der Eclipse -IDE ausgeführt werden. Dieser Java -Code benötigt kein Java -Paket, um vor Beginn einer neuen Klasse importiert zu werden.

Stellen Sie sicher, dass Sie die im Code verwendete Klasse genauso nennen wie der Name Ihrer Java -Datei i.e. "prüfen". Die Haupttestklasse enthält viele benutzerdefinierte Funktionen zusammen mit ihrer untergeordneten Klassenstruktur mit dem Namen „Knoten“, die zum Erstellen eines Knotens verwendet wird. Die Knotenklasse enthält die Deklaration einer Ganzzahldaten "D", vorherige "P" und den nächsten "N" -Noden für einen aktuellen Knoten zu erstellen. Diese "Knoten" -Klasse enthält auch die Konstruktor -Funktion "Knoten", um die Daten für einen aktuell erstellten Knoten festzulegen. Der Kopfknoten "H" und der Schwanzknoten "T" wurde auf null gesetzt. Ausgehend von der Main () -Funktion dieses Programms wurde die verknüpfte Liste „L“ mithilfe der Objekterstellungstechnik für die Hauptklasse „Test“ erstellt. Der Funktionsaufruf zur Funktion „Add“ der "Test" -Klasse wurde mit dem doppelt verknüpften Listenobjekt "L" durchgeführt, um 5 Datenwerte zur doppelt verknüpften Liste nacheinander hinzuzufügen.

Stellen Sie sicher. Wenn die Funktion „Add“ einen Aufruf mit dem Daten "D" erhält, wird die Funktion hinzufügen, die mit der Erstellung eines neuen Knotens "newn" beginnt, mit der Erstellung eines neuen Knotens "neu". Hier kommt die IF-ELSE-Anweisung, um zu überprüfen, ob der Knoten leer ist oder nicht. Wenn es sich. Der vorherige Knoten wird zum Kopf und der nächste Knoten wird ein Schwanz. Andernfalls wird der else -Teil ausgeführt, wenn der Kopf nicht „null“ ist. Hier werden die Knoten ausgetauscht. Der nächste Knoten eines Schwanzes wird ein neuer Knoten und der vorherige Knoten eines neuen Knotens „Newn“ wird ein Schwanz.

Gleichzeitig wird der Heckknoten zum neuen Knoten und der nächste Schwanz wird auf Null gesetzt. Wenn die Funktion show () aufgerufen wurde, wird die Funktion „Show“ unter der Funktion add () ausgeführt. Hier definieren wir den aktuellen Knoten als "Kopf" -Knoten. Wenn immer noch der Kopfknoten null ist, wird angezeigt, dass die verknüpfte Liste leer ist. Andernfalls wird weiterhin prüft, ob der aktuelle Knoten null ist oder nicht, zusammen mit dem Datenwert „D“ an diesem bestimmten aktuellen Knoten.

Am Ende wird der Text des aktuellen Knotens zum aktuellen Knoten für den nächsten Funktionsaufruf. Hier wurde unsere main () -Funktion nach dem Hinzufügen und Anzeigen der doppelt verknüpften Listenknotendaten abgeschlossen. Lassen Sie uns diesen Java -Code einfach kopieren, einfügen und ausführen, um seine Ausgabe zu sehen.

Pakettest;
öffentliche Klassen -Test
Klassenknoten
int d;
Knoten p;
Knoten n;
öffentlicher Knoten (int d)
Das.d = d;

Knoten H, T = NULL;
public void add (int d)
Node newn = neuer Knoten (d);
if (h == null)
H = t = newn;
H.p = null;
T.n = null;

anders
T.n = newn;
neu.p = t;
t = newn;
T.n = null;

public void show ()
Knoten C = H;
if (h == null)
System.aus.println ("Liste ist leer");
zurückkehren;

System.aus.println ("Double Linked List:");
während (c != null)
System.aus.Druck (c.d + "");
c = c.N;

public static void main (String [] args)
Test L = neuer Test ();
L.Add (11);
L.Hinzufügen (62);
L.Add (23);
L.Hinzufügen (14);
L.Hinzufügen (45);
L.Zeigen();

Nach der Ausführung dieses Code in Eclipse IDE wurden alle 5 Datenwerte in der doppelt verknüpften Liste „L“ in derselben Reihenfolge angezeigt. Wir haben sie ohne Änderung in der Reihenfolge hinzugefügt. Zu beachten ist, dass, wenn wir die Funktion „Hinzufügen“ nicht verwendet hätten, um Daten zu einer doppelt verknüpften Liste hinzuzufügen, möglicherweise angezeigt wurde, dass die doppelt verknüpfte Liste derzeit leer ist.

Beispiel 02:

Schauen wir uns ein weiteres Beispiel von Java an. Wir werden nicht nur eine Möglichkeit zeigen, einen neuen Knoten zu erstellen, sondern auch eine Möglichkeit, die Knoten aus Start- und Endknoten zu löschen und sich in beide Richtungen zu bewegen. Ausgehend der Hauptfunktion dieses Code. Die 2 -Funktion ruft auf die Funktion „Addf“ auf, die zu einer temporären "Temperatur" -Knotenerstellung führt. Wenn der Kopf nicht null ist, stellen wir den vorherigen Kopf als "Temps" -Knoten ein. Andernfalls wird der Kopf zu einem „Temperatur“ und wenn der Schwanz null ist, wird er ein „Temperaturknoten“.

Auf den Funktionsaufruf zur Funktion „Addl“ führt zum Hinzufügen eines Datenelementknotens links im aktuellen Knoten mit der ähnlichen Weise, die wir übernommen haben, um einen Knoten auf der rechten Seite hinzuzufügen. Die Bedingungen, die in seinen "if" Aussagen verwendet werden, werden diesmal umgekehrt. Der Funktion "MoveFor" -Funktion führt Sie dazu, in einer doppelt verknüpften Liste voranzukommen. Nachdem wir uns weiterentwickelt hatten, versuchten wir den Funktionsaufruf bei den Funktionen „RMVF“ und „RMVL“, um die gerade hinzugefügten Datenknoten am ersten und letzten der doppelt verknüpften Liste zu entfernen.

Pakettest;
Java importieren.Util.NoSuchelementException;
öffentliche Klassentest
Privatknoten H;
Privatknoten t;
private intgröße;
public test ()
Größe = 0;

private Klassenknoten
T d;
Knoten n;
Knoten p;
öffentlicher Knoten (T D, Knoten N, Knoten p)
Das.d = d;
Das.n = n;
Das.p = p;

public int size ()
Renditegröße;
public boolean isempty ()
Return Size == 0;
public void addf (t d)
Knoten temp = neuer Knoten (d, h, null);
if (h != null)
H.p = temp;

H = Temp;
if (t == null)
t = temp;

Größe ++;
System.aus.println ("Hinzufügen d:"+d);

public void addl (t d)
Knoten temp = neuer Knoten (d, null, t);
if (t != null)
T.n = temp;

t = temp;
if (h == null)
H = Temp;

Größe ++;
System.aus.println ("Daten hinzufügen:"+d);

public void movefor ()
System.aus.println ("Iterating vorwärts.");
Knoten temp = h;
while (temp != null)
System.aus.println (temp.D);
temp = temp.N;

public void Moveback ()
System.aus.println ("iterierter Backwort.");
Knoten temp = t;
while (temp != null)
System.aus.println (temp.D);
temp = temp.P;

public t rmvf ()
if (size == 0) werfen neue noSuchelementException ();
Knoten temp = h;
H = h.N;
H.p = null;
Größe--;
System.aus.println ("gelöscht D:"+Temp.D);
Temperatur zurückgeben.D;

public t rmvl ()
if (size == 0) werfen neue noSuchelementException ();
Knoten temp = t;
t = t.P;
T.n = null;
Größe--;
System.aus.println ("gelöschte Daten:"+tempe.D);
Temperatur zurückgeben.D;

public static void main (String args [])
versuchen
Test L = neuer Test ();
L.Addf (2);
L.Addf (26);
L.Addl (11);
L.Bewegen für();
L.Rmvf ();
L.Rmvl ();
L.Zurückgehen();
catch (Ausnahme er)
ähm.printStacktrace ();

Nach der Ausführung wurden 2 Knoten am Start und 2 Knoten am Endpunkt hinzugefügt, während alle Daten des Knotens angezeigt wurden. Zwei Knoten wurden gelöscht und die Daten des letzten Knotens wurden angezeigt, nachdem sie sich rückwärts bewegt haben.

Abschluss

Die Verwendung einer doppelt verknüpften Liste ist bei Java -Programmierern sehr häufig, um sich in beide Richtungen zu bewegen und zu arbeiten. Dazu sind die Java -Beispiele der wichtigste Teil dieses Artikels, um eine Möglichkeit zu erörtern, eine doppelt verknüpfte Liste mit den Daten, vorherigen, aktuellen und nächsten Knoten usw. zu erstellen, usw.