206.反转链表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head == nullptr || head->next == nullptr){
return head;
}
ListNode* left = head;
ListNode* right = head->next;
while(right){
ListNode* node = right->next;
right->next = left;
left = right;
right = node;
}
head->next = nullptr; // 容易被忘记,此时 head 已经是尾节点了,next 该指向 nullptr
return left;
}
};

反转链表需要用到三个指针,left 和 right 指针用于反转链表,而 node 指针用来保存还未进行反转的链表。