Nwlapcug.com


Come invertire una lista concatenata singola

Come invertire una lista concatenata singola


È comune ad avere bisogno di invertire una lista concatenata, ma può essere difficile per farlo correttamente. Una delle soluzioni più semplici è quello di eseguire un'iterazione del ciclo, invertendo ogni puntatore. Questo pseudocodice viene illustrato come eseguire questo processo mentre tenere traccia delle variabili necessarie. Lo pseudocodice è abbastanza generico che si dovrebbe essere in grado di adattarlo a qualsiasi lingua è il codice in.

Istruzioni

1

Controllare i casi limite semplice. Se il puntatore di testa è null, l'elenco è vuoto e nessun lavoro deve essere fatto. Se prossima puntatore della testa è null, c'è un solo elemento nell'elenco, quindi invertire non fa nulla.

Se testa = null quindi tornare
Se testa -> next = null quindi restituire

2

Inizializzare tre puntatori: prev, corrente e quello successivo. \"Prev\" e \"current\" dovrebbe puntare verso il nodo principale dell'elenco. \"Next\" dovrebbe puntare al secondo nodo guardando il puntatore nel nodo principale.

puntatore prev = testa
VAI
puntatore corrente = testa
VAI
puntatore next = testa -> next;

3

Impostare puntatore prossimo del nodo testa su null. Il nodo principale diventerà l'ultimo nodo nell'elenco, quindi non ci sarà nessun nodi dopo di esso.

testa -> next = null

4

Scorrere l'elenco invertendo la direzione dei puntatori. I tre puntatori inizializzati prima vengono utilizzati per tenere traccia della posizione corrente nell'elenco.

mentre avanti! = null //A puntatore successivo null significa che abbiamo raggiunto la fine dell'elenco
corrente = prossimo //Advance il puntatore corrente
Next = current -> prossimo //Advance il puntatore del mouse
corrente -> next = prev //Point nodo corrente al nodo precedente, invertendo il link
Prev = corrente //Advance l'ultimo puntatore
fine mentre

5

Punto variabile testa al nuovo capo dell'elenco.

testa = corrente

Consigli & Avvertenze

  • Se avete bisogno di scorrere un elenco collegato in entrambe le direzioni per implementare una lista doppiamente concatenata.