Implementierung von doppelt verknüpfter Liste C ++

Implementierung von doppelt verknüpfter Liste C ++
Eine doppelt verknüpfte Liste ist das strukturelle Konzept in C ++, das aus 1 oder mehr Knoten besteht. Ein einzelner Knoten muss drei Teile i haben i.e., Daten, eine Referenz auf den vorherigen Knoten und den nächsten bevorstehenden Knoten. Der allererste Knoten soll der „Kopf“ -Knoten sein, der zum Zugriff auf die gesamte verknüpfte Liste verwendet wird. Der allerletzte Knoten einer verknüpften Liste hat immer den Nullwert. Wenn Sie in diesem Konzept neu sind und nach authentischen Ressourcen suchen, um Wissen zu erhalten, ist dieser Leitfaden für Sie vorhanden.

Beginnen wir diesen Artikel mit der neuen C ++ - Dateierstellung. Wir müssen es mit der Terminal "Touch" -Anfrage erstellen. Nach der Dateierstellung besteht unsere nächste Aufgabe darin, sie zu öffnen und einen C ++ - Code zu erstellen. Für die Eröffnung können Sie jeden integrierten Redakteur von Ubuntu 20 nutzen.04 Wie ein Texteditor, VIM -Editor oder GNU Nano Editor. Wir verwenden also die Anweisung „Nano“ auf unserer Schale, um die doppelte zu öffnen.CC -Datei darin.

Beispiel 01:

Lassen Sie uns ein grundlegendes Beispiel für C ++-Code erstellen, um eine doppelt vernichtete Liste zu erstellen. Nach der Dateiöffnung haben wir den iostream hinzugefügt. Der C ++ - Standard -Namespace wird verwendet. Danach haben wir mit einigen seiner Elemente eine Knotenstruktur mit dem Namen "Knoten" erstellt. Es enthält die Ganzzahlvariable "D" als Datenteil. Dann haben wir drei neue Knotenstrukturen definiert. Der "P" -Knoten zeigt den vorherigen Knoten "N" den nächsten Knoten, und der Kopfknoten "H" wird Null als weiteren Knoten angegeben.

Jetzt ist die obige Struktur nicht nützlich, bis wir einige Knoten im Programmcode hinzufügen und zeigen. Wir verwenden die Funktion add (), um die Knotendaten aus der Funktion main () abzurufen. In seiner ersten Zeile haben wir einen neuen Knoten „neuer Knoten“ unter Verwendung des Struktur „Knotens“ erstellt und ihm einen Speicher zugewiesen, der der Größe eines „Knotens“ entspricht. Die Zeichenzeichen "->" werden verwendet.e., Als nächstes vorher, Daten usw. Daher haben wir die Daten eines neuen Knotens mit -> singen und hinzugefügt, die die von der main () -Funktion in Parameter „ND“ übergebene Daten in die Variable „D“ eines neuen Knotens übergeben haben. Der vorherige Knoten eines neuen Knotens wird in Null initialisiert und sein nächster Knoten wird ein „Kopf“ sein. Die Anweisung "if" ist hier, um zu überprüfen, ob der Wert des Kopfes "H" nicht gleich Null ist. Wenn der Wert von „H“ nicht null ist, wird der vorherige Knoten eines "Kopf" -Knotens, einen neuen Knoten. Außerdem wird der Kopf auch ein neuer Knoten sein.e., Einen Wert eines neuen Knotens haben.

Hier kommt die Funktion „show ()“, um den erstellten Knoten anzuzeigen. Darin haben wir einen „PTR“ -Knoten erstellt und ihn zu einem „Kopf“ gemacht. Die Schleife "während" ist hier, um zu bestätigen, dass der Wert von "PTR" nicht null ist. Während die Bedingung erfüllt ist, zeigt die Cout -Anweisung die von einem Benutzer hinzugefügten Daten auf die gleiche, aber entgegengesetzte Weise an. Jetzt wird der nächste von "PTR" -Knoten "PTR".

Hier ist unsere main () -Funktion, von der die Ausführung beginnt. Wir haben die Funktion „hinzufügen“ 4 Mal aufgerufen, um einen neuen Knoten zu erstellen und Daten in die Variable „D“ eines neuen hinzuzufügen. Die Cout -Anweisung zeigt uns, dass wir die Funktion „Show“ aufrufen werden, um alle Knoten anzuzeigen, die wir hinzugefügt haben.

Jetzt ist es Zeit, diesen C ++ - Code in Ubuntus G ++ - Compiler für die C ++ - Sprache zu kompilieren. Beim Ausführen des Codes mit “./A.out “, wurden wir mit den 4 Knotendaten in entgegengesetzter Reihenfolge i angezeigt. I.e., Wir haben in 4, 12, 2, 7 Bestellungen hinzugefügt und es kehrt in 7, 2, 12, 4 zurück und zeigt den letzten Auftrag der ersten Kommen.

Beispiel 02:

Schauen wir uns ein weiteres Beispiel einer doppelt verknüpften Liste an. Erstellte eine Struktur "Knoten" mit derselben Variablen "D", dem nächsten Knoten "N" und dem vorherigen Knoten "P".

Jetzt haben wir die Funktion Frontpush () verwendet, um einen Knoten zu Beginn mit den Daten i einzufügen i.e. Kopfknoten. Wir haben einen neuen Knoten darin erstellt.e. "NewNode" unter Verwendung der Struktur "Knoten*" -Syntax. Danach verweisen wir auf die Daten "D", den nächsten Knoten, der ein "Kopf" sein wird, und der vorherige Knoten, der null sein wird. Die Anweisung „Wenn“ verwendet wurde, um zu überprüfen, ob der Wert des Kopfes nicht null ist. Wenn der Kopf noch nicht „null“ ist, müssen wir den vorherigen Kopf zu einem neuen Knoten machen, und der Kopfzeile wird auf den neuen Knoten hinweisen.

Die Funktion Afterpush () ist hier, um einen neuen Knoten nach unserem bereits hergestellten Knoten einzufügen. Die Anweisung "If" prüft, ob der vorherige Knoten gleich Null ist oder nicht, und zeigt diese mit dem „Cout“ an. Es wurde ein neuer Knoten gebildet und Daten werden in "D" eingefügt. Der „nächste“ des Neuen wird der nächste des vorherigen und der nächste der vorherigen wird ein neuer Knoten. Der vorherige Neue wird der vorherige selbst. Wenn der nächste Neues Null nicht gleich ist, werden wir den nächsten Neuen machen, der auch den nächsten neuen Knoten ist, ein neuer Knoten.

Jetzt werden wir die Funktion „Endpush“ verwenden, um einen neuen Knoten am Ende einer verknüpften Liste einzufügen. Der neue Knoten wurde erstellt und Daten von Main () übergeben () und als nächstes von New IS NULL. Wir haben den Kopf vorübergehend aufbewahrt. Das "If" prüft, ob die verlinkte Liste leer ist, und machen den neuen Knoten "Kopf". Das "während" durchquert die verlinkte Liste, wenn die verlinkte Liste bereits nicht leer ist. Da die "Temperatur" unser letzter Knoten ist, haben wir "Neu" die nächste Temperatur zugewiesen. Der vorherige Neue wird "Temp" zugeordnet.

Die Methode delete () verwendet verschiedene "if" -Anweisungen, um den nächsten und vorherigen von Del-Knoten auszutauschen, und des Kopfknotens. Letzter wird die „freie“ Funktion verwendet, um den Speicher eines Del-Knotens freizugeben.

Die Funktion show () dieses Programms wird erneut verwendet, um die doppelt verknüpfte Liste auszudrucken.

Die Funktion main () beginnt mit der Ausführung, indem der Kopfknoten zu null initialisiert wird. Die Funktion „Endpush“ ist erforderlich. Frontpush () wird zweimal verwendet, um einen Knoten an der Vorderseite der verknüpften Liste hinzuzufügen. Nach „Endpush ()“ Nutzung haben wir zweimal "Afterpush ()" verwendet. Die Funktionen show () und "delete ()" werden nacheinander verwendet, während das "Delete" verwendet wird, um jeden letzten Knoten aus der verlinkten Liste zu löschen, und Show () zeigt das an.

Die Zusammenstellung und Ausführung zeigt die verlinkte Liste von Start zu Ende i.e., Nach jedem Knoten Löschen.

Abschluss

In diesem Artikel werden die einfachen Codebeispiele erläutert, um eine doppelt verknüpfte Liste in C ++ zu erstellen, während die Ubuntu 20 verwendet wird.04 Linux -System. Wir haben uns auch die Möglichkeiten angesehen, einen Knoten am Start und Ende der verlinkten Liste einzufügen und nach einem bereits hergestellten Knoten I einzulegen.e., zwischen. Die Löschfunktion löschte jeden Knoten jedes Mal aus der verknüpften Liste.