24. 两两交换链表中的节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(head == nullptr || head->next == nullptr) return head;

ListNode* first = head;
ListNode* second = head->next;
while(second){
swap(first->val,second->val);
first = first->next->next;
if(!second->next) break;
second = second->next->next;
}

return head;
}
};

由于 second 比 first 快,哪怕是进入循环内,也要时刻保证在用 second 多级指向的时候(多次next),不再某个以 NULL 节点去 next,这在循环链表的时候务必谨记的。