链表逆置的四种方法详解
创作时间:
作者:
@小白创作中心
链表逆置的四种方法详解
引用
CSDN
1.
https://m.blog.csdn.net/2402_88002942/article/details/142885810
背景要求
给定一条链表,将其逆置。
方法一(循环迭代)
实现思路
设pre、cur、nxt三个指针,分别令其指向空、表头和q的下一个元素,如图:
令cur的next结点指向pre,如图:
令pre、cur、nxt依次向后移动,如图:
重复以上步骤,如下图:
至此,链表逆置成功。
实现代码
Node* reverse(Node* head) {
Node* pre = NULL;
Node* cur = head;
Node* nxt = NULL;
while (cur != NULL) {
nxt = cur->next;
cur->next = pre;
pre = cur;
cur = nxt;
}
head = pre;
return head;
}
复杂度
时间复杂度O(n),空间复杂度O(1)
方法二(递归)
实现思路
递归
首先考虑出口,即递归至最深:head->next == NULL
借助栈理解即先将各个结点从头到尾压入栈,如图
到出口了,退栈:
逆置结束。
但说实话递归这件事在我这不能细想,一想就绕进去了,所以代码实现可以粗暴理解为:
实现代码
Node* Recursion_reverse(Node* head) {
if (head == NULL || head->next == NULL) {//判空和出口
return head;
}
else {
Node* new_head = Recursion_reverse(head->next);
head->next->next = head;
head->next = NULL;
return new_head;
}
}
复杂度
时间复杂度O(n),空间复杂度O(n)
方法三(头插法)
实现思路
跟打麻将摸牌一样,一张一张插进去就好,如图:
实现代码
Node* head_reverse(Node* head)
{
Node* new_head = NULL;
Node* temp = NULL;
if (head == NULL || head->next == NULL)
return head;
while (head != NULL)
{
temp = head;
head = head->next;
temp->next = new_head;
new_head = temp;
}
return new_head;
}
复杂度
时间复杂度O(n),空间复杂度O(1)
方法四(就地逆置)
实现思路
其实就是这个
展开来讲,如下:
一条一条拧,就逆置过来了。
实现代码
Node* local_reverse(Node* head)
{
Node* begin = NULL;
Node* end = NULL;
if (head == NULL || head->next == NULL)
return head;
begin = head;
end = head->next;
while (end != NULL)
{
begin->next = end->next;
end->next = head;
head = end;
end = begin->next;
}
return head;
}
复杂度
时间复杂度O(n),空间复杂度O(1)
热门推荐
一江诗画 满城美景 南昌邀您来过年
曾经的商业“顶流”!南昌八一广场的百货大楼要“改造升级”?
从"挂墙卖"到"品牌化" 南昌服装零售实现华丽蝶变
赤链蛇:粉色蛇界的神秘王者
“成功率85%,最快20天到账”:揭秘争议“全额退保”产业链
2025年南农大第二届创新发展大会:产学研融合助力农业升级
双补丸:传统中药的现代应用
打造和谐家居:风水十大原则详解
从光照到植物生长:教你辨识住宅风水优劣
蓝游蛇成网红宠物,你敢养吗?
蓝游蛇的冬眠秘密:从准备到苏醒的生存智慧
蓝珊瑚蛇的神秘遗传密码:揭秘自然界中的“蓝宝石”
从药物到生活调理:全方位应对老人心慌心悸
早搏患者用药指南:如何避免药物引发新心律失常
江西特产大盘点|你知道哪几种?
从孙少安到孙少平:<平凡的世界>里的时代印记
东辽西安双辽:辽源三镇秋色里的乡村慢生活

专家推荐:13个实用方法轻松应对负面情绪
香砂六君丸:益气健脾加行气,专治严重脾胃病
宠物能上高铁了?官方最新回应:进一步深化高铁托运宠物的可行性研究
8个流行网络用语详解:拼音缩写背后的中国式幽默
茼蒿排骨粥:15步做出滋补暖胃养生粥
US News发布2024全球生活质量排名,丹麦居首
印度跻身世界第五大经济体,专家称仍需克服多重挑战
世界医疗标杆:德国如何打造优质高效的医疗服务
IMF批准70亿贷款助巴基斯坦渡难关,专家称无法根治经济顽疾
螺旋桨VS旋翼:航空器动力系统的两大阵营
冬季养生必备:玉竹淮山炖鸽子汤
如何挑选高品质鸽子肉?从选购到烹饪全攻略
麻黄:射麻口服液中的关键成分