给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2:
输入:head = [] 输出:[]示例 3:
输入:head = [1] 输出:[1]提示:
- 链表中节点的数目在范围?
[0, 100]
?内0 <= Node.val <= 100
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head) {
if(head==NULL)
return NULL;
if(head->next==NULL)
return head;
struct ListNode *pre=(struct ListNode *)malloc(sizeof(struct ListNode));
pre->next=head;
struct ListNode *pTemp=pre;
struct ListNode *start,*end;
while(pTemp->next&&pTemp->next->next){
start=pTemp->next;
end=pTemp->next->next;
pTemp->next=end;
start->next=end->next;
end->next=start;
pTemp=start;
}
return pre->next;
}
大佬的思路好清晰TAT? 感觉我就是写一步看一步,缺哪个变量就加上,经常会措手不及www思路好混乱