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
2. Node1 se mueve a la ubicación de node2, node2 se mueve a la ubicación de node2next, repita los pasos 1
3. Hasta que node2 sea NULL, regrese a node1. El resultado final es el siguiente
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;
}
};