koblet liste: Dette er en lenket liste som vi ønsker å snu.
Etter omvendt lenket liste: Nedenfor blir resultatet etter å ha reversert listen ovenfor.
I eksemplet ovenfor kan vi se at hodeknuten og haleknuten endrer posisjonene sine når vi reverserer den koblede listen. Hodeknuten, som nå er en haleknute, peker på nullnoden fordi den nå er en haleknute.
Algoritme trinn
Vi kommer til å forklare omvendt lenket liste ved hjelp av en eller annen billedform for å gjøre det lettere å forstå. Så la oss starte med eksemplet.
Nedenfor er en koblet liste som vi ønsker å snu.
Trinn 1. Den grønnfargede noden er en hodeknute, som peker på den første noden i oppstarten.
Steg 2. I neste trinn vil vi krysse hele koblede listen til vi ikke får NULL -pekeren ved siden av overskriftsnoden. For det skal vi tilordne neste node et midlertidig navn, som vist i diagrammet nedenfor.
Trinn 3. Ettersom vi har en ny referanseknute som heter "Midlertidig", som kan hjelpe oss med å krysse hele lenket listen før vi ikke får nullpekeren, så kan vi angi neste lenke til toppnoden som null, noe som ikke vil påvirke den koblede Liste som vist nedenfor i diagrammet. NULL -pekeren ved siden av den gjeldende noden kalles forrige node.
Trinn 4. Nå flytter vi den midlertidige noden til neste node og gjeldende node til den forrige midlertidige noden. Så nå har vi flyttet til neste node. Vi endrer også den forrige noden fra null til bare den forrige noden til den nåværende noden. Så nå vil den midlertidige noden ta seg av alle traverses til NULL -pekeren slik at vi kan stille inn lenken til den gjeldende noden til den forrige noden, og nå peker den til den forrige noden, som vist i nedenfor diagrammet.
Så vi følger de samme trinnene, og til slutt vil vi få en omvendt koblet liste.
Trinn 5.
Trinn 6.
Trinn 7.
Trinn 8.
Trinn 9.
Trinn 10.
Trinn 11.
Trinn 12.
Trinn 13.
Trinn 14. På dette trinnet reverserte vår koblede liste.
C ++ -program for å reversere en koblet liste
#inkludere
ved hjelp av navneområdet STD;
// Metode for å lage noden
struct node
int verdi;
Node *NextNodeptr;
*NodeObject;
void createLinkedList (int n);
void ReverSelinkedList (Node ** NodeObject);
void display ();
int main ()
int n, verdi, vare;
cout<<"How many nodes you want to create =>: ";
cin >> n;
CreateLinkedList (N);
cout<<"\nInformation in the linked list: \n";
vise();
cout<<"\nLinked list after reversed\n";
reverselinkedlist (& nodeObject);
vise();
retur 0;
// denne metoden vil opprette den koblede listen
void createLinkedList (int n)
struct node *frontnode, *tempnode;
int verdi, i;
nodeObject = (struct node *) malloc (sizeof (struct node));
if (nodeObject == null)
cout<<" Not enough to assing memory";
annet
cout<<"Please enter the info of node 1 (number only): ";
cin >> verdi;
NodeObject-> Verdi = verdi;
nodeObject-> nextNodeptr = null;
tempNode = nodeObject;
for (i = 2; i<=n; i++)
frontnode = (struct node *) malloc (sizeof (struct node)));
// når ingen node i den koblede listen
if (frontnode == null)
cout<<"Memory can not be allocated";
gå i stykker;
annet
cout<<"Please enter the info of node "<cin >> verdi;
frontnode-> verdi = verdi;
frontnode-> nextNodeptr = null;
tempnode-> nextNodeptr = frontnode;
tempNode = tempnode-> nextNodeptr;
void reverselinkedlist (node ** nodeObject)
struct node *tempnode = null;
struct node *forrige node = null;
struct node *currentNode = ( *nodeObject);
mens (CurrentNode != Null)
tempNode = currentNode-> nextNodeptr;
currentNode-> nextNodeptr = forrige node;
ForrigeNode = CurrentNode;
currentNode = tempnode;
(*NodeObject) = forrige node;
void display ()
struct node *tempnode;
if (nodeObject == null)
cout<<"Linkedlist is empty";
annet
tempNode = nodeObject;
mens (tempnode != Null)
cout<verdi<<"\t";
tempNode = tempnode-> nextNodeptr;
cout <
Produksjon
Hvor mange noder vil du opprette =>: 6Konklusjon
Denne Linuxhint -artikkelen har gjennomgått hvordan du kan snu en koblet liste i C++. Det er noen andre metoder for å reversere en koblet liste, men dette er en veldig vanlig metode for å snu en koblet liste. Det er opp til deg å bestemme hvordan du vil løse problemene dine, men generelt bør den omvendte koblede listefunksjonen være en enkel sløyfe med pekerbytter.