Eine verknüpfte Liste umkehren

Eine verknüpfte Liste umkehren
Wie man eine verknüpfte Liste in C ++ umgeht, wird in diesem LinuxHint -Tutorial angezeigt. Wenn Sie eine verknüpfte Liste umkehren, wird der Linkpfad umgekehrt und der Kopf wird zum Schwanz, und der Schwanz wird zum Kopf. Indem wir die Positionen der Knoten austauschen, können wir dies schnell verstehen. In diesem Tausch ändern wir nur die Positionen der Knoten von links nach rechts oder umgekehrt.

verlinkte Liste: Dies ist eine verknüpfte Liste, die wir umkehren möchten.

Nach der umgekehrten verknüpften Liste: Das folgende ist das Ergebnis nach Umkehrung der obigen Liste.

Im obigen Beispieldiagramm können wir sehen, dass der Kopfknoten und der Heckknoten ihre Positionen ändern, wenn wir die verknüpfte Liste umkehren. Der Kopfknoten, der jetzt ein Heckknoten ist, zeigt auf den Nullknoten, weil er jetzt ein Heckknoten ist.

Algorithmusschritte

  1. Wir erstellen eine Hauptmethode und deklarieren einige erforderliche Variablen.
  2. Dann ist unser nächster Schritt eine Methode, mit der eine verknüpfte Liste erstellt werden kann. Diese Methode hilft uns, eine verknüpfte Liste zu erstellen.
  3. Der nächste Schritt besteht darin, eine Methode zu erstellen, um die verknüpfte Liste umzukehren. In dieser Methode übergeben wir die gesamte verknüpfte Liste, und diese Methode wird die verknüpfte Liste umkehren.
  4. Jetzt benötigen wir eine andere Methode, um unser Ergebnis nach dem Umkehren anzuzeigen.
  5. Wir werden all diese oben genannten Methoden zu unserer Hauptmethode kombinieren.

Wir werden die umgekehrte verknüpfte Liste mithilfe eines bildlichen Formulars erklären, um das Verständnis zu erleichtern. Beginnen wir also mit dem Beispiel.

Das folgende ist eine verknüpfte Liste, die wir umkehren möchten.

Schritt 1. Der grün gefärbte Knoten ist ein Kopfknoten, der auf den ersten Knoten im Start zeigt.

Schritt 2. Im nächsten Schritt durchqueren wir die gesamte verknüpfte Liste, bis wir den Nullzeiger nicht neben dem Headerknoten bekommen. Dafür werden wir dem nächsten Knoten einen temporären Namen zuweisen, wie im folgenden Diagramm gezeigt.

Schritt 3. Da wir einen neuen Referenzknoten mit dem Namen "Temporary" haben, der uns helfen kann, die gesamte verknüpfte Liste zu durchqueren, bis wir den Nullzeiger nicht erhalten, können wir den nächsten Link des Header -Knoten Liste wie unten im Diagramm gezeigt. Der Nullzeiger neben dem aktuellen Knoten wird als vorheriger Knoten bezeichnet.

Schritt 4. Jetzt verschieben wir den temporären Knoten auf den nächsten Knoten und den aktuellen Knoten zum vorherigen temporären Knoten. Jetzt sind wir zum nächsten Knoten umgezogen. Wir ändern auch den vorherigen Knoten von Null auf nur den vorherigen Knoten des aktuellen Knotens. Jetzt kümmert sich der temporäre Knoten also um alle Traversen bis zum Nullzeiger, sodass wir den Link des aktuellen Knotens auf den vorherigen Knoten einstellen können, und nun zeigt er auf den vorherigen Knoten, wie im folgenden Diagramm gezeigt.

Daher befolgen wir die gleichen Schritte und erhalten schließlich eine umgekehrte verknüpfte Liste.

Schritt 5.

Schritt 6.

Schritt 7.

Schritt 8.

Schritt 9.

Schritt 10.

Schritt 11.

Schritt 12.

Schritt 13.

Schritt 14. In diesem Schritt kehrte sich unsere verknüpfte Liste um.

C ++ - Programm, um eine verknüpfte Liste umzukehren

#enthalten
Verwenden von Namespace STD;
// Methode zum Erstellen des Knotens
Strukturknoten
int Wert;
Knoten *NextNodeptr;
*nodeObject;
void CreateLinkedList (int n);
void ReverSelinkedList (Knoten ** nodeObject);
void display ();
int main ()
int n, Wert, Element;
Cout<<"How many nodes you want to create =>: ";
Cin >> n;
CreateLinkedList (n);
Cout<<"\nInformation in the linked list: \n";
Anzeige();
Cout<<"\nLinked list after reversed\n";
ReverSelinkedList (& nodeObject);
Anzeige();
Rückkehr 0;

// Diese Methode erstellt die verknüpfte Liste
void CreateLinkedList (int n)
Struct Node *FrontNode, *tempnode;
int Wert, ich;
nodeObject = (struct node *) malloc (sizeof (struct node));
if (nodeObject == null)
Cout<<" Not enough to assing memory";
anders
Cout<<"Please enter the info of node 1 (number only): ";
CIN >> Wert;
nodeObject-> value = value;
nodeObject-> nextNodeptr = null;
tempnode = nodeObject;
für (i = 2; i<=n; i++)
frontNode = (struct node *) malloc (sizeof (struct node));
// Wenn kein Knoten in der verlinkten Liste
if (FrontNode == null)
Cout<<"Memory can not be allocated";
brechen;

anders
Cout<<"Please enter the info of node "<CIN >> Wert;
FrontNode-> value = value;
FrontNode-> NextNodeptr = null;
tempnode-> nextnodeptr = FrontNode;
tempnode = tempnode-> amtnodeptr;




void ReverSelinkedList (Knoten ** nodeObject)
struct node *tempnode = null;
struct node *vorhernode = null;
struct node *currentNode = ( *nodeObject);
while (currentNode != Null)
tempnode = currentNode-> nextNodeptr;
currentNode-> nextNodeptr = vorhernode;
vorhernode = currentNode;
currentNode = tempnode;

(*nodeObject) = vorhernode;

void display ()
struct node *tempnode;
if (nodeObject == null)
Cout<<"Linkedlist is empty";

anders
tempnode = nodeObject;
while (tempnode != Null)

Cout<Wert<<"\t";
tempnode = tempnode-> amtnodeptr;


Cout <

Ausgang

Wie viele Knoten möchten Sie erstellen =>: 6
Bitte geben Sie die Informationen von Knoten 1 ein (nur Nummer): 101
Bitte geben Sie die Informationen von Knoten 2: 95 ein
Bitte geben Sie die Informationen von Knoten 3: 61 ein
Bitte geben Sie die Informationen von Knoten 4: 19 ein
Bitte geben Sie die Informationen von Knoten 5: 12 ein
Bitte geben Sie die Informationen von Knoten 6: 11 ein
Informationen in der verknüpften Liste:
101 95 61 19 12 11
Verlinkte Liste nach rückwärtsveredelten
11 12 19 61 95 101

Abschluss

In diesem LinuxHint -Artikel wurde überprüft, wie eine verknüpfte Liste in c umgekehrt werden kann++. Es gibt einige andere Methoden, um eine verknüpfte Liste umzukehren, aber dies ist eine sehr häufige Methode, um eine verknüpfte Liste umzukehren. Es liegt an Ihnen zu entscheiden, wie Sie Ihre Probleme lösen möchten, aber im Allgemeinen sollte die umgekehrte Listenfunktion eine einfache Schleife mit Zeigerwechsel sein.