Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come invertire una lista unica Collegato

E 'comune per necessità di invertire una lista collegata , ma può essere difficile da fare come si deve . Una delle soluzioni più semplici è quello di scorrere l' anello , invertendo ogni puntatore. Questo pseudocodice mostra come eseguire questo processo , mantenendo traccia delle variabili necessarie . Lo pseudocodice è abbastanza generico che si dovrebbe essere in grado di adattarsi a qualsiasi linguaggio il codice è dentro Istruzioni
1

Verifica per semplici casi limite . Se il puntatore di testa è nullo , la lista è vuota e nessun lavoro deve essere fatto . Se indicatore accanto al capo è nullo , c'è solo un elemento della lista , in modo da invertire non si fa nulla .

Se testa = null allora returnif testa - > next = null poi tornare
2

Inizializzare tre puntatori : prec , correnti e successivi. " Indietro " e "corrente" dovrebbero puntare al nodo della lista . "Avanti" deve puntare al secondo nodo , cercando in puntatore del nodo testa
puntatore

prev = testa ; . Corrente del puntatore = testa ; puntatore next = testa - > next ;

3

indicatore accanto al nodo di testa a null . Il nodo principale diventerà l'ultimo nodo della lista , quindi non ci saranno nodi dopo di esso.

Testa - > next = null
4

Loop attraverso la lista invertire la direzione dei puntatori . I tre puntatori inizializzati in precedenza vengono utilizzati per tenere traccia della posizione corrente nell'elenco .

Mentre accanto ! = Null //A nullo prossimo puntatore significa che abbiamo raggiunto la fine della prossima listcurrent = //Advance il pointernext corrente = current- > next //avanzare alla prossima pointercurrent - > next = prev //Point il nodo corrente al nodo precedente , invertendo il linkprev = corrente //Avanza l'ultimo pointerend mentre
5

punto la variabile testa alla nuova testa della lista .

testa = corrente

 

Programmazione © www.354353.com