/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head) {
//递归结束条件:头结点不存在或头结点的下一个节点不存在,此时不需要交换,直接返回head
if(!head || !head->next)//示例二和示例三的情况
return head;
//创建一个节点指针类型保存头结点下一个节点
struct ListNode * newHead = head->next;
//更改头节点+2位节点后的值,并将头节点的next指针指向这个更改过的list
head->next = swapPairs(newHead->next);
//将新的头结点的next指针指向老的头结点
newHead->next = head;
return newHead;
}