题目:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 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思路好混乱