É comum a necessidade de reverter uma lista ligada , mas pode ser difícil de fazê-lo corretamente . Uma das soluções mais simples é para percorrer o circuito , revertendo cada ponteiro. Este pseudocódigo mostra como realizar este processo , mantendo o controle das variáveis necessárias . O pseudocódigo é genérico o suficiente para que você deve ser capaz de adaptá-lo a qualquer língua o seu código está dentro Instruções
1
Verificar casos de borda simples. Se o ponteiro cabeça é nulo, a lista está vazia e nenhum trabalho precisa ser feito . Se ao lado do ponteiro da cabeça é nula , não é apenas um elemento na lista, assim invertendo ele não faz nada .
Se a cabeça = null então returnif cabeça - > next = null então retornar
2
Inicializar três pontos : próximo , atuais e próximos . "Anterior " e " atual " deve apontar para o nó cabeça da lista . "Next" deve apontar para o segundo nó , olhando para o ponteiro no nó principal
ponteiro prev = cabeça ; . Atual ponteiro = cabeça ; ponteiro next = cabeça -> next;
3
Situado junto ponteiro do nó principal como nulo. O nó principal será o último nó na lista, assim não haverá nenhum nó depois.
Cabeça - > next = null
4
loop através da lista de reverter a sentido dos ponteiros . Os três ponteiros inicializados anteriormente são utilizados para acompanhar a posição atual na lista.
Enquanto seguinte! = Null //A próxima ponteiro nulo significa que chegamos ao final do próximo listcurrent = //Adiantamento o pointernext atual = atual -> seguinte //Adiantamento a próxima pointercurrent -> next = anterior //Aponte o nó atual para o nó anterior , revertendo a linkprev = corrente //Adiantamento a última pointerend enquanto
5
Aponte a variável cabeça no novo chefe da lista.
cabeça = corrente