leetcode-华为专题-24. 两两交换链表中的节点
/** * 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; } };