Sword se refiere a Offer24-lista vinculada inversa-fácil

Enlace de pregunta

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.

Por ejemplo, ingrese:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

rango de datos:

0 <= 节点个数 <= 5000

Ideas de resolución de problemas:

De hecho, es un proceso de dar la vuelta
1-> 2-> 3-> 4-> 5-> NULL
NULL <- 1 <- 2 <-3 <- 4 <- 5
1. Establecer una variable de nodo1, la El valor inicial es NULL, el valor inicial de node2 es el
nodo principal siguiente a node1
Inserte la descripción de la imagen aquí
2. Node1 se mueve a la ubicación de node2, node2 se mueve a la ubicación de node2next, repita los pasos 1
Inserte la descripción de la imagen aquí
3. Hasta que node2 sea NULL, regrese a node1. El resultado final es el siguiente
Inserte la descripción de la imagen aquí

Código de CA (c ++)

/**
 * 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) {
    
    
        if(head == NULL){
    
    
            return head;
        }
        ListNode * node1 = NULL;
        ListNode * node2 = head;
        while(node2){
    
    
            ListNode * nt = node2->next;
            node2->next = node1;
            node1 = node2;
            node2 = nt;
        }

        return node1;
    }
};

Supongo que te gusta

Origin blog.csdn.net/Yang_1998/article/details/113050937
Recomendado
Clasificación