/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head){
//当链表为空或只有一个节点是,不要交换,直接返回原头节点
if(head == NULL || head->next == NULL)
return head;
//建立新表头
struct ListNode *newHead = (struct ListNode *)malloc(sizeof(struct ListNode));
newHead->next = head;
struct ListNode *cur = head, *prev = newHead;
//当cur和cur->next都不为空时进行循环
while(cur && cur->next)
{
struct ListNode *temp = cur->next;
cur->next = temp->next;
temp->next = cur;
prev->next = temp;
//交换完后更新prev和cur的位置
prev = cur;
cur = cur->next;
}
return newHead->next; //返回表头
}