cosecha:
- 1. La lista de nodos consta de dos partes, una parte de la información actual se almacena, señalando a otra parte del nodo de almacenamiento a la siguiente
- 2. implementación recursiva es realmente difícil de entender, mucho veces más optimistas
Revertir una lista enlazada.
Ejemplo:
Entrada: 1-> 2-> 3-> 4- > 5-> NULL
salida: 5-> 4-> 3-> 2- > 1-> NULL
Análisis: Para la transcripción inversa de esta lista, resulten necesarios después de la frente, la parte delantera se convierte en la parte posterior, por lo que encontrar la manera de revertir la parte delantera y trasera, juez luego invertido para determinar si la condición se ha vuelto curr está vacío porque en términos relativos , Curr fue al frente
- aplicación iterativa
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode nextTemp = curr.next;
curr.next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
- recursiva
Comprender:
ListNode p = reverseList(head.next);
Este medio de la línea que -> estará al frente de la reversión lista, p representa la cola de la lista después de la inversión, que se invierte antes de que la cabeza de la lista,head.next.next=head
es la lista de puntos a la inversa,head.next=null
es de señalar que cortar hacia adelante .
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode p = reverseList(head.next);
head.next.next = head;
head.next = null;
return p;
}