2022-11-14 03:57:10 +00:00
|
|
|
#include "s0024_swap_nodes_in_pairs.hpp"
|
|
|
|
|
2022-11-30 10:20:36 +00:00
|
|
|
ListNode* S0024::swapPairs(ListNode* head) {
|
2022-12-02 08:15:15 +00:00
|
|
|
// 只有当 head 和 head->next 都不为空时才翻转
|
|
|
|
// 其它情况都直接返回
|
2022-11-14 03:57:10 +00:00
|
|
|
if (head == nullptr || head->next == nullptr) {
|
|
|
|
return head;
|
|
|
|
}
|
2022-12-02 08:15:15 +00:00
|
|
|
// 从这一行开始就假设 head 和 head->next 都不为空了
|
|
|
|
// 我们首先把从 head->next->next 开始的链表翻转了
|
|
|
|
ListNode* ptr = swapPairs(head->next->next);
|
|
|
|
// 现在我们开始翻转 head 和 head->next
|
|
|
|
ListNode* ans = head->next;
|
|
|
|
head->next->next = head;
|
|
|
|
head->next = ptr;
|
|
|
|
return ans;
|
2022-11-14 03:57:10 +00:00
|
|
|
}
|