Revertir una lista enlazada.
Ejemplo:
Entrada: l-> 2-> 3-> 4-> 5-> NULL salida: 5-> 4-> 3-> 2-> l-> NULL
Ideas de resolución de problemas:
A partir de la cabeza de la lista, hasta tres punteros a tres elementos adyacentes, cambiando constantemente de dirección entre el enlace hasta que un recorrido completo de la lista
código de implementación:
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* node = head;
struct ListNode* cur = head;
struct ListNode* pre = NULL;
while(cur) {
cur = cur->next;
node->next = pre;
pre = node;
node = cur;
}
return pre;
}
El resultado: