(Lista Reverse) Descripción Asunto:
Después de introducir una lista lista invertida, la nueva lista de la cabecera de salida.
Ideas resolución de problemas: el tema y la lista es una lista enlazada, por lo que con el fin de revertir toda la lista, tenemos que apuntan a resolver los problemas entre los nodos, el último nodo apunta a la segunda cuenta atrás, el penúltimo punto a la tercera parte inferior a, ......, la segunda a la primera, el primer punto a un valor nulo; nodos que necesitan ser recogidos uno a uno, para hacer los ajustes de la lista; esta corrección requiere dos punteros auxiliares: registro pre su posición nodo anterior, por lo que el siguiente puntero de los puntos de nodo a nodo anterior, pero antes de señalar a un nudo p después de grabar un puntero a un nodo tiene que abordar el punto anterior, para evitar la pérdida de nodo .
- nodo de cabecera ejemplo a los siguientes pasos:
- 1. Punto de cabeza inversión es nulo, de modo que el primero no se invierte cuando un nodo debe ser nulo, el puntero es nulo pre inicializado;
- 2. El cabezal de impresión del siguiente nodo con el puntero p head.next;
- 3. Retire la cabeza de la lista, es decir, vamos a head.next señalando previamente;
- 4. La eliminación del nodo de cabecera completado y un nodo conectado a la parte delantera, entonces tenemos que operar en una unión, y así la necesidad de pre movimiento de la cabeza, de modo que la cabeza apuntando pre, punto cabeza al siguiente nodo.
- Esta operación se repite hasta que la cabeza ha completado cuatro lista original, seleccione nulo, el final del ciclo, regresar a antes.
/ * NodoLista Clase pública { int Val; NodoLista Siguiente = null; NodoLista (int Val) { this.val = Val; } } * / public class {Solución NodoLista ReverseList (cabeza NodoLista) pública { // lista vacía se determina y se la longitud de la lista 1 IF (cabeza == null || head.next == null) { cabeza de retorno; } // inicialización para almacenar dos punteros antes y después del nodo actual posición NodoLista pre = null; NodoLista NX = null; el mientras (! cabeza = null) { // primera ubicación de almacenamiento del siguiente nodo del nodo actual NX = head.next; // completa reversión (pre tan dirigido head.next) head.next = pre; Un movimiento del puntero nodo // pre = cabeza; // mover el nodo actual, el anterior primer paso para guardar la siguiente posición de nodo de cabeza = NX; } pre retorno; } }