标签:dummy head ListNode 指向 结点 next 链表 LeetCode24 节点
LeetCode24- 两两交换链表中的节点
最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩!
1、题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
2、思路
建立虚拟头结点p
定义a指针和b指针
第一步虚拟头结点p指向b,a指向b的下一个元素,b指向a
第二步,把p前进一步到a
3、代码
c++
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
//判断边界
if(head == NULL || head->next == NULL){
return head;
}
//定义虚拟头结点,指向头结点
auto dummy=new ListNode(-1);
dummy->next=head;
for(auto p=dummy;p->next&&p->next->next;)
{
//第一步虚拟头结点p指向b,a指向b的下一个元素,b指向a
//第二步,把p前进一步到a
auto a=p->next,b=a->next;
p->next=b;
a->next=b->next;
b->next=a;
p=a;
}
return dummy->next;
}
};
Java
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){
return head;
}
//定义虚拟头结点,指向头结点
ListNode dummy=new ListNode(-1);
dummy.next=head;
ListNode p;p=dummy;
while(p.next != null && p.next.next != null) {
ListNode a=p.next,b=a.next;
p.next=b;
a.next=b.next;
b.next=a;
p=a;
}
return dummy.next;
}
}
爱睡觉的小飞猪
发布了38 篇原创文章 · 获赞 46 · 访问量 6万+
私信
关注
标签:dummy,head,ListNode,指向,结点,next,链表,LeetCode24,节点 来源: https://blog.csdn.net/sk18192449347/article/details/104101638
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。