类似于滑动窗口,用三个指针组成一个窗口,每次移动一个,将中间指针的mid->next = rear,相当于反转了一个节点,不断的滑动到最后,完成一个链表的反转。
typedef struct ListNode Node;
Node *reverseList(Node *head){
Node *front = head;
Node *mid = NULL;
Node *rear = NULL;
if(!head){
return NULL;
}
while(front){
rear = mid;
mid = front;
front = front->next;
mid->next = rear;
}
return mid;
}