Descripción del Título:
Defina una función, ingrese el nodo principal de una lista vinculada, invierta la lista vinculada y genere el nodo principal de la lista vinculada invertida.
Ejemplo:
Entrada: 1-> 2-> 3-> 4-> 5-> NULL Salida: 5-> 4-> 3-> 2-> 1-> NULL
Análisis de pensamiento:
Es la forma más fácil de recorrer cada nodo en la lista vinculada, luego usar el método de interpolación principal para insertar en la nueva lista vinculada y finalmente regresar a la nueva lista vinculada
Código clave (es decir, cambiar la forma del método de inserción del cabezal) :
head3 = head-> next; // Primero guarda la lista enlazada x que necesita ser revertida desde el siguiente nodo y
head -> next = head1; // El siguiente nodo del nodo se convierte en una nueva lista enlazada z
head1 = head; / / z reemplaza la posición de la nueva lista vinculada nuevamente
head = head3; // Reasigne la y guardada a la lista vinculada que debe revertirse para el siguiente ciclo
Código:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *head1 = NULL;
ListNode *head3 = NULL;
while(head)
{
head3 = head->next;
head ->next = head1;
head1= head;
head = head3;
}
return head1;
}
};