ListNode* swapPairs(ListNode* head) {
ListNode* prevhead = new ListNode(0);
prevhead -> next = head;
ListNode*cur = prevhead; //设置一个空的节点相当于前驱节点
while (cur->next&&cur->next->next) {
ListNode* second = cur -> next; //准备交换的第一个节点
ListNode* third = cur -> next -> next -> next; //保留一个下次准备交换的第一个节点
cur -> next = second -> next; //前驱节点指向第二个准备交换的节点
second -> next -> next = second; //第二个节点指向第一个节点
second -> next = third; 第一个节点指向下一次的第一个节点
cur = second;// 下次交换的前驱节点
}
return prevhead -> next;
}