lista collegata: Questo è un elenco collegato che vogliamo invertire.
Dopo l'elenco collegato invertito: Il seguente sarà il risultato dopo aver invertito l'elenco sopra religioso.
Nel diagramma di esempio sopra, possiamo vedere che il nodo della testa e il nodo di coda cambiano le loro posizioni quando invertiamo l'elenco collegato. Il nodo della testa, che ora è un nodo di coda, punta al nodo null perché ora è un nodo di coda.
Passi di algoritmo
Spiegheremo l'elenco collegato invertito usando qualche modulo pittorico per rendere più facile la comprensione. Quindi iniziamo con l'esempio.
Il seguente è un elenco collegato che vogliamo invertire.
Passo 1. Il nodo di colore verde è un nodo principale, che indica il primo nodo nell'avvio.
Passo 2. Nel passaggio successivo, attraverseremo l'intero elenco collegato fino a quando non avremo il puntatore nullo accanto al nodo di intestazione. Per questo, assegneremo al nodo successivo un nome temporaneo, come mostrato nel diagramma seguente.
Passaggio 3. Dato che abbiamo un nuovo nodo di riferimento chiamato "temporaneo", che può aiutarci a attraversare l'intero elenco collegato fino a quando non otteniamo il puntatore null, quindi possiamo impostare il collegamento successivo del nodo di intestazione come null, che non influirà sul collegamento Elenco come mostrato di seguito nel diagramma. Il puntatore null accanto al nodo corrente è chiamato nodo precedente.
Passaggio 4. Ora, spostiamo il nodo temporaneo sul nodo successivo e il nodo corrente al nodo temporaneo precedente. Quindi ora ci siamo trasferiti al nodo successivo. Cambiamo anche il nodo precedente da Null solo al nodo precedente del nodo corrente. Quindi ora il nodo temporaneo si occuperà di tutte le traverse fino al puntatore nullo in modo da poter impostare il collegamento del nodo corrente sul nodo precedente, e ora punta al nodo precedente, come mostrato nel diagramma seguente.
Quindi seguiamo gli stessi passaggi e, infine, otterremo un elenco collegato invertito.
Passaggio 5.
Passaggio 6.
Passaggio 7.
Passaggio 8.
Passaggio 9.
Passaggio 10.
Passaggio 11.
Passaggio 12.
Passaggio 13.
Passaggio 14. In questo passaggio, la nostra lista collegata invertita.
Programma C ++ per invertire un elenco collegato
#includere
Utilizzo dello spazio dei nomi std;
// metodo per creare il nodo
nodo struct
valore int;
nodo *NextNodePtr;
*nodeobject;
void createLinkEdList (int n);
void inverselinkedlist (nodo ** nodeobject);
void display ();
int main ()
int n, valore, articolo;
cout<<"How many nodes you want to create =>: ";
CIN >> n;
CreateLinkEdList (N);
cout<<"\nInformation in the linked list: \n";
Schermo();
cout<<"\nLinked list after reversed\n";
reverseLinkEdList (& NodeObject);
Schermo();
restituzione 0;
// Questo metodo creerà l'elenco collegato
void createLinkEdList (int n)
nodo struct *frontnode, *tempnode;
valore int, i;
nodeObject = (struct nodo *) malloc (sizeof (nodo struct));
if (nodeobject == null)
cout<<" Not enough to assing memory";
altro
cout<<"Please enter the info of node 1 (number only): ";
CIN >> valore;
nodeobject-> value = value;
nodeobject-> nextNodePtr = null;
tempNode = nodeObject;
per (i = 2; i<=n; i++)
FrontNode = (Struct Node *) Malloc (sizeof (nodo struct));
// quando nessun nodo nell'elenco collegato
if (frontNode == null)
cout<<"Memory can not be allocated";
rottura;
altro
cout<<"Please enter the info of node "<CIN >> valore;
FrontNode-> value = value;
FrontNode-> NextNodePtr = null;
tempNode-> nextNodePtr = frontNode;
tempNode = tempNode-> nextNodePtr;
void inverseLinkEdList (nodo ** nodeObject)
Struct Node *tempNode = null;
nodo struct *precedenteNode = null;
nodo struct *currentNode = ( *nodeObject);
while (currentNode != Null)
tempNode = currentNode-> nextNodePtr;
CurrentNode-> NextNodePtr = precedenteNode;
PrecedenteNode = CurrentNode;
currentNode = tempNode;
(*nodeObject) = precedenteNode;
void display ()
Struct Node *tempNode;
if (nodeobject == null)
cout<<"Linkedlist is empty";
altro
tempNode = nodeObject;
mentre (tempnode != Null)
cout<valore<<"\t";
tempNode = tempNode-> nextNodePtr;
cout <
Produzione
Quanti nodi vuoi creare =>: 6Conclusione
Questo articolo di Linuxhint ha rivisto come invertire un elenco collegato in C++. Esistono altri metodi per invertire un elenco collegato, ma questo è un metodo molto comune per invertire un elenco collegato. Spetta a te decidere come si desidera risolvere i tuoi problemi, ma generalmente la funzione dell'elenco collegato inverso dovrebbe essere un semplice ciclo con swap di puntatore.