0%

两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

示例:

1
给定 1->2->3->4, 你应该返回 2->1->4->3.

说明:

  • 你的算法只能使用常数的额外空间。
  • 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

解答:

1
2
3
4
5
6
7
8
9
ListNode * swapPairs(ListNode* head) {
if (!head || !head->next) return head;
auto a = head;
auto b = a->next;
auto c = b->next;
a->next = swapPairs(c);
b->next = a;
return b;
}