Sortieren Sie die verknüpfte Liste C ++

Sortieren Sie die verknüpfte Liste C ++

Verlinkte Liste

Eine verknüpfte Liste ist eine Art Datenstruktur. Die Elemente in der verknüpften Liste werden durch Verwendung von Zeigern verbunden. Es ist eine Sammlung von Knoten. Ein Knoten enthält zwei Teile. Einer enthält die Daten, und der zweite Teil besteht aus dem Zeiger. Dieser Zeiger wird verwendet, um die Speicheradresse des Knotenelements neben ihm in der verlinkten Liste zu speichern. Der Vorteil der verknüpften Liste eines Arrays besteht darin, dass es eine dynamische Größe hat.

Darstellung einer verknüpften Liste

Der erste Knoten der verknüpften Liste wird vorne genannt. Sein Wert ist im Fall eines leeren Arrays null. In C ++ verwenden wir eine Struktur, um einen Knoten darzustellen.

Dies ist ein einfacher C ++ - Code mit der Erstellung der verknüpften Liste. Wir haben eine Klasse erstellt, in der sein öffentlicher Teil, eine Datenvariable des Ganzzahltyps.

Im Hauptprogramm werden drei Knoten erstellt, wobei der obere erste Knoten als "Kopf" -Knoten erklärt wird. Alle Drei-Punkte dieser Knoten sind leer, daher werden sie zunächst als Null erklärt. Danach werden alle drei Knoten in einem Haufen zugewiesen. 'Kopf' zweiter und der dritte wird mit dem neuen Knoten zugeordnet.

Jetzt werden wir Daten zuweisen, und Daten können jeder zufällige Wert sein. Zunächst werden wir Daten im ersten Knoten zuweisen.

Kopf-> Daten = 1;

Diese Demonstration der zugewiesenen Daten zeigt, dass der Datenteil des ersten Knotens Daten darin enthalten wird. Nachdem wir Daten zugewiesen haben, werden wir den ersten Knoten mit dem zweiten verknüpfen

Kopf-> Weiter = Sekunde;

Wir verbinden den "nächsten" Zeigerbereich mit dem anderen Knoten, um zwei Knoten zu verknüpfen. Wir werden Daten zuweisen, die im Datenteil des ersten Knotens gespeichert sind. Während der "nächste" Teil die Speicheradresse des danach vorhandenen Knotens enthält. In ähnlicher Weise werden wir nun dem zweiten Knoten Daten zuweisen, und der zweite Knoten wird mit dem dritten Knoten verknüpft sein. Fügen Sie nun Daten im dritten Knoten hinzu. Da wir nur drei Knoten erstellt haben, gibt es keinen anderen Knoten, daher wird der nächste Teil des dritten Zeigers als Null erklärt. Dies zeigt an, dass die verknüpfte Liste beendet wird.

Dritter-> next = null;

Beispiel

Sortieren Sie die verknüpfte Liste

Hier haben wir eine Struktur deklariert, die einen Knoten einer einzigen verknüpften Liste darstellt. Wie oben beschrieben, werden das Konzept der verknüpften Listenerklärung, der Datenvariablen und der Zeigervariablen in der Struktur aufgenommen. Wie der "nächste" Zeigerteil, der die Adresse speichert, haben wir auch zwei weitere Variablen vom Zeigertyp deklariert: Knotenkopf und Knotenschwanz. Diese beide werden ursprünglich als NULL deklariert.

Da der Insertion -Knoten sich mit dem Einfügen von Datenknoten in die verlinkte Liste befasst, werden wir eine Funktion zum Hinzufügen eines Knotens verwenden. Die Daten weisen diesen Knoten auch zu. Der Parameter dieser Funktion enthält also Daten als Argument. Vor dem Einfügen wird der Knoten mit einer MALCOC () -Funktion mit Speicherzuweisung erstellt. Der Datenanteil des neuen Knotens wird mit den bestandenen Daten zugewiesen.

Newnode-> data = data;

Und ähnlich wird der nächste Teil als Null zugeordnet, da es keine Verbindung zwischen diesem Knoten mit einem anderen gibt. Da werden Kopf- und Schwanzvariablen deklariert, um bei der Einfügungssorte zu helfen. Jetzt werden wir sie hier nutzen. Erstens werden wir durch die Verwendung einer IF-ELSE-Anweisung prüfen, ob der Kopf null ist, da wir oben als Null erklärt haben, was bedeutet, dass die gesamte Liste leer ist. Deshalb ist der Kopf leer, sodass der Kopf und die Schwanzvariablen auf den neu erstellten Knoten verweisen. Andernfalls nehmen wir beim Erstellen der Liste, wenn die Liste nicht leer ist, beim Erstellen der Liste, die wir auch Daten eingegeben haben.

Tail-> next = newnode;

Und jetzt wird dieser neue Knoten als neue Geschichte fungieren.

Tail = newnode;

Für weitere Ergänzungen wird derselbe Prozess fortgesetzt, aber wir müssen die verknüpfte Liste sortieren. Wir haben also einen einzelnen Knoten hinzugefügt, der als Tempo -Knoten fungiert, um Daten vorübergehend darin zu speichern.

Nach dem Hinzufügen des neuen Knotens werden wir eine Funktion verwenden, um die Liste zu sortieren/ zu ordnen. Da der Sortyp hier nicht erwähnt wird, wird die Liste standardmäßig in aufsteigender Reihenfolge sortiert.

Wenn wir zurück in das Beispiel kommen, zeigt ein weiterer aktueller Zeiger auf den Kopf, wie wir oben erklärt haben. Dies wird verwendet, um die Listenelemente zu sortieren. Eine weitere Variable vom Typ Zeiger wird hier verwendet und dann als NULL deklariert. Eine weitere Nutzung wird später im Programm stattfinden.

Hier wenden wir einen Scheck an, um festzustellen, ob sich der Kopfzeiger in der Nullposition befindet und dann zum Hauptprogramm zurückkehrt. Andernfalls werden wir hier eine Logik anwenden, die eine Weileschleife folgt. Der Indexzeiger verweist auf den nächsten Teil des aktuellen Knotens. In dieser Schleife wird eine andere während der Schleife verwendet, und dies dauert auch, bis der aktuelle Knoten nicht null ist. Hier werden wir eine IF-Statement verwenden, um zu überprüfen, ob die Daten im aktuellen Knoten größer sind als die Daten innerhalb des Indexknoten.

Die TEMP -Variable spielt hier beim Datenaustausch eine wichtige Rolle. Zuerst werden die Daten des aktuellen Knotens in Temp übertragen, und dann ist der aktuelle Knoten jetzt leer. Dem Knoten wird der Wert von Indexdaten zugewiesen. Und am Ende wird der leere Indexknoten durch die in der temporierenden Variablen vorhandenen Daten zugewiesen.

Außerhalb der If-Statement wird der Indexknoten auch mit dem neuen Wert eines Index erhöht. In ähnlicher Weise wird der aktuelle Knoten außerhalb der while -Schleife auch vom neuen Wert zugewiesen.

Als nächstes haben wir hier eine Anzeigefunktion verwendet, um den Wert aller Knoten anzuzeigen. Der aktuelle Zeiger zeigt auf den Kopf. In einem anderen Fall zeigt eine Weile alle Werte an, bis der aktuelle Knoten nicht null ist.

Betrachten Sie nun das Hauptprogramm, die Funktion von addnode () wird mit den Werten aufgerufen, um neue Werte in die Liste hinzuzufügen. Anschließend wird vor der Sortierung alle eingegebenen Werte angezeigt. Rufen Sie dann die Funktion "sort ()) auf. Rufen Sie die Anzeigefunktion erneut auf, um die gesamte sortierte Liste anzuzeigen.

Speichern Sie die Codedatei und führen Sie sie dann mit Hilfe eines G ++ - Compilers im Ubuntu -Terminal aus.

$ g ++ -o Dateidatei.C
$./Datei

Aus dem resultierenden Wert können Sie feststellen, dass die Werte in aufsteigender Reihenfolge angeordnet sind, da sie zufällig in die verknüpfte Liste eingegeben wurden.

Abschluss

'Sortieren verlinkte Liste C ++' enthält die Beschreibung des Grundwissens bezüglich der verknüpften Liste und ihrer Erstellung. Ein Beispielcode reicht aus, um die Erstellung der Knoten und die Arbeit aller Knoten in der verknüpften Liste zu demonstrieren. Die Elemente in der verknüpften Liste sind in aufsteigender Reihenfolge unter Verwendung eines detaillierten Vorgangs angeordnet, indem neue Knoten hinzugefügt und dann eine Temperaturvariable sortiert werden. Erläuterung mit dem Code wird durchgeführt, um den Benutzer zu unterstützen.