24. 两两交换链表中的节点¶
难度:中等
题目¶
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
题解¶
基本思路: 先交换前两个节点,再递归处理后面的节点。
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head){
if (!head || !(head->next))
return head;
struct ListNode *temp1 = head->next, *temp2 = temp1->next;
temp1->next = head;
head->next = swapPairs(temp2);
return temp1;
}