思路:

1、由于head 节点可能产生变化,所以创建一个虚拟的头指针 dummy
2.p=dummy,a=p->next,b=p->next->next
3.交换
p->next=b;
a->next=b->next;
b->next=a;
p=a;
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
// ListNode* head1=new ListNode(0);
// if(head==NULL) return head;
// head1->next=head;
// ListNode* p1=head;
// ListNode* p2=head->next;
// ListNode* h1=head1;
// while(p2)
// {
// p1->next=p2->next;
// p2->next=p1;
// h1->next=p2;
// h1=p1;
// p1=p1->next;
// if(p1)
// {
// p2=p1->next;
// }
// else
// {
// break;
// }
// }
// return head1->next;
auto dummy=new ListNode(-1);
dummy->next=head;
for(auto p=dummy;p->next && p->next->next;)
{
auto a=p->next,b=p->next->next;
p->next=b;
a->next=b->next;
b->next=a;
p=a;
}
return dummy->next;
}
};
Every step of barefoot running deserves to be recorded