题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]
示例 2:
输入:head = [] 输出:[]
示例 3:
输入:head = [1] 输出:[1]
我在网上找到一种较为简单的解题方法,是这样的:
struct ListNode* swapPairs(struct ListNode* head){
if( head && head->next ){ // NULL 或者 仅一个element会跳过if体
struct ListNode *p, *q;
int tmp;
p = head;
while(p && p->next){
q = p->next; // 安置q
tmp = p->val; // 2变量交换
p->val = q->val; // 2变量交换
q->val = tmp; // 2变量交换
p = q->next; // 安置p
}
}
return head; // NULL 或者 仅一个element直接return
}
OK了~