Gana la Oferta (lista) - lista de vertidos

  (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; 
    } 
}

  

Supongo que te gusta

Origin www.cnblogs.com/dashenaichicha/p/12572366.html
Recomendado
Clasificación