题目描述
给定一个链表,交换每两个相邻节点并返回其头部。
例如,
Given1-> 2-> 3-> 4,您应该返回列表as2-> 1-> 4-> 3。
你的算法应该只使用恒定的空间。您不能 修改列表中的值,只有节点本身可以更改。
使用递归
核心思想:
q=p->next;
p->next=q->next
q->next=p;
ListNode *swapPairs(ListNode *head) {
{
if(!head || !head->next) /// 空或者仅有一个节点
{return head;}
ListNode *q= head->next;
head->next = swapPairs(q->next);
q->next = head;
return q;
}
}