题目:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 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思路好混乱
本文描述了一种方法,如何在不改变链表节点值的前提下,两两交换给定链表中的相邻节点。通过使用预置指针和临时指针,逐个完成节点的交换操作,适用于0到100个节点的链表。

&spm=1001.2101.3001.5002&articleId=134959299&d=1&t=3&u=4cf336b89cd542338a2d098bd49084a9)
2145

被折叠的 条评论
为什么被折叠?



