
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
// 举例 1-2->3->4
ListNode* swapPairs(ListNode* head) {
if(head==NULL||head->next==NULL)
return head;
ListNode* H = head->next; // H 指向2
// ListNode* tmp = swapPairs(H->next);
// head->next = tmp;
// 上面两句可以合并为一句
head->next = swapPairs(H->next); // 1的next指向3
H->next = head; // 2的next指向1
// 2->1->(再对里面进行递归)
return H;
}
};