“Conocimiento Programación>C /C + + Programming

¿Cómo revertir una lista única Linked

2011/4/18
Es común que tenga que invertir una lista encadenada , pero puede ser difícil de hacerlo bien . Una de las soluciones más simples es para recorrer el circuito , la inversión de cada indicador . Este pseudocódigo muestra cómo realizar este proceso , mientras que el seguimiento de las variables necesarias . El pseudocódigo es lo suficientemente genérico que debe ser capaz de adaptarse a cualquier idioma que su código es pulg Instrucciones
1

Comprobar casos extremos simples. Si el puntero de cabeza es nulo, la lista está vacía y no hay trabajo que hay que hacer . Si el indicador de siguiente de la cabeza es nulo , no es sólo un elemento en la lista , por lo que invertir no hace nada.

Si la cabeza = null entonces returnif cabeza - > siguiente = null luego regresar
2

Inicializar triples : anterior , actual y siguiente . " Anterior " y "actual" debe apuntar al nodo de cabecera de la lista. " Next" debe apuntar al segundo nodo mirando el puntero en el nodo principal
pointer

prev = cabeza ; . Puntero actual = cabeza ; puntero next = cabeza - > siguiente ;
Página 3

situado junto puntero del nodo principal en null. El nodo principal se convertirá en el último nodo de la lista, así que no habrá ningún nodo después de él.

Cabeza - > siguiente = null
4

Recorrer la lista de la inversión de la dirección de los punteros . Los tres punteros inicializados antes se utilizan para realizar un seguimiento de la posición actual en la lista.

Mientras próxima ! = Null //El siguiente puntero nulo significa que hemos llegado al final de la listcurrent = siguiente //Avance el pointernext actual = actual -> siguiente //Avanzar al siguiente pointercurrent - > siguiente = prev //Punto de nodo actual al nodo anterior , revirtiendo la linkprev = corriente //Avanzar en la última pointerend mientras
5

punto la variable cabeza de la lista de nuevo la cabeza .

cabeza = corriente

C /C + + Programming
Cómo abrir MS -DOS
¿Cuáles son los cuatro tipos diferentes de relación de herencia
Cómo calcular integrales con C + +
¿Por qué utilizas STP?
Cómo vaciar el búfer en C + +
Cómo utilizar Ctags Con UltraStudio
Cuando se ejecuta una instrucción en un programa, ¿qué sucede la memoria del procesador?
¿Cómo se define formalmente la memoria?
Conocimiento de la computadora © http://www.ordenador.online