Sword se refiere a la serie Offer Sword se refiere a la Oferta 24: lista enlazada inversa

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

 

Supongo que te gusta

Origin blog.csdn.net/qq_46423166/article/details/110799717
Recomendado
Clasificación