使用递归的方法
递归的截至条件为链表小于等于一个节点,
每次仅处理头节点head以及head->next节点,使二者交换。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode Node;
struct ListNode* swapPairs(struct ListNode* head) {
Node *p = head;
if(!head || !head->next){
return head;
}
p = p->next;
head->next = swapPairs(p->next);
p->next = head;
return p;
}