原题链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/
1、双指针法
ListNode* swapPairs(ListNode* head) {
ListNode* dummy = new ListNode(0);
dummy->next = head;
ListNode *p = dummy;
while ( p && p->next && p->next->next) {
ListNode *a = p->next, *b = a->next;
p->next = b, a->next = b->next;
b->next = a, p = a;
}
return dummy->next;
}
2、递归★
递归本质是做相同的操作
ListNode* swapPairs(ListNode* head) {
if(head==NULL||head->next==NULL) return head;
ListNode *p=head->next;//p是head下一个节点
head->next=swapPairs(p->next);
p->next=head;
return p;
}