链表反转的三种方法详解:头插法、迭代法和递归法
创作时间:
作者:
@小白创作中心
链表反转的三种方法详解:头插法、迭代法和递归法
引用
CSDN
1.
https://blog.csdn.net/weixin_45031801/article/details/139496847
链表反转是数据结构中一个非常经典的问题,尤其在面试中频繁出现。掌握链表反转的多种方法不仅能提升编程能力,还能在面试中给面试官留下深刻印象。本文将详细讲解链表反转的三种方法:头插法、迭代法和递归法。
一、题目描述
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
二、解题方法
头插法 —— 创建新的链表
头插法的基本思路是将原链表的节点依次插入到新链表的头部。具体步骤如下:
- 定义三个变量:
cur
(用于遍历原链表)、newnode
(保存cur
的下一个节点)和rhead
(新链表的头节点)。 - 遍历原链表,将每个节点插入到新链表的头部。
- 当
cur
为NULL
时,表示遍历完成,此时rhead
就是新链表的头节点。
struct ListNode* reverseList(struct ListNode* head)
{
// 重新创建一个链表,将之前的链表进行头插即可
struct ListNode* rphead = nullptr;
// 进行指针变换
struct ListNode* cur = head;
while(cur!=NULL)
{
// 用于保存下一个节点地址
struct ListNode* newnode = cur->next;
// 头插
cur->next = rphead;
rphead = cur;
cur = newnode;
}
return rphead;
}
迭代法 —— 三指针
迭代法不需要创建新的链表,只需要在原链表上操作即可。具体步骤如下:
- 定义三个指针:
cur
(当前节点)、nextnode
(cur
的下一个节点)和prev
(前一个节点)。 - 将
cur->next
指向prev
,实现链表反转。 - 更新三个指针的位置,继续迭代。
- 当
cur
为NULL
时,表示遍历完成,此时prev
就是新链表的头节点。
class Solution {
public:
ListNode* reverseList(ListNode* head)
{
// 1. 迭代法
// 定义三个指针
ListNode* prev = nullptr; // cur 的前一个节点
ListNode* cur = head;
// 开始迭代
while(cur!=nullptr)
{
ListNode* nextnode = cur->next; // cur的下一个指针
cur->next = prev;
prev = cur;
cur = nextnode;
}
return prev;
}
};
递归法
递归法通过函数调用自身来实现链表反转。具体步骤如下:
- 定义递归函数
reverse(prev, cur)
,其中prev
是已反转部分的头节点,cur
是当前待反转的节点。 - 递归结束条件是
cur
为NULL
,此时返回prev
。 - 在每次递归中,将
cur->next
指向prev
,然后调用reverse(cur, newnode)
继续递归。
class Solution {
public:
ListNode* reverse(ListNode* prev, ListNode* cur)
{
// 最终结束条件
if(cur==nullptr)
{
return prev;
}
ListNode* newnode =cur->next;
cur->next = prev;
// 将 cur 作为 prev 传入下一层
// 将 newnode 作为 cur 传入下一层,改变其指针指向当前 cur
return reverse(cur,newnode);
}
ListNode* reverseList(ListNode* head)
{
// 3. 递归法
return reverse(nullptr,head);
}
};
三、总结与提炼
链表反转是面试中常见的算法题,掌握多种解法有助于在面试中脱颖而出。建议读者通过画图和实际编码加深理解,熟练掌握这三种方法。
热门推荐
任正非与他们开了个“闭门会议”,折射出一个什么信号?
刘邦为啥夸人是狗,女婿为啥乘龙?古人说话总扯动物干嘛?
抑郁症复发率高达85%,顶级医学杂志揭示三大关键治疗策略
三亚两日游:邂逅阳光沙滩与热带雨林的浪漫之旅
孕期皮肤变化与护理:原因解析与实用指南
知画猫:聊聊角色设计中的五个要素
属狗人2024年运势及运程详解
法国小伙捐赠600多张日本侵华照片,尘封的相册记载了什么?
郑韩故城国家考古遗址公园巍巍古城 诉说东周风云
充电桩安装指南:如何选择和安装合适的充电桩
如何评估鹅养殖项目的成本效益?
送给青少年读者的阅读礼物!
西南政法大学怎么样?全面解析这所政法名校
中国科技把神话变成现实!“国家队”集体下场认领哪吒“仙家法宝”
HR数字化转型必读:如何用人力资源系统实现降本增效的实战指南
屏幕自由时代:手机分离的革新趋势与新未来
传奇永恒,致敬 “篮球之神” 迈克尔・乔丹 62 岁生日
碳毡边角料粉碎机怎么用
集团型企业如何实现风险预警
2月看海指南:6个宝藏地推荐,2月出游:小众海边目的地精选
葡萄酒存放年限是几年?别再盲目存酒了!
《The Finals》评测:独特玩法与创新设计下的瑕不掩瑜
汽车改装全攻略:这些改装项目合法又安全
埃及艳后的面具承载了她的形象,还具有历史价值,是如何做到的?
小孩子肠胃炎能吃什么?这3类食物可以帮孩子快速恢复
“杭州六小龙”独角兽出圈,扰动中美科技,带出节后大A科技开门红,相关概念股梳理
AI大模型专题:从世界模型看算力需求变化
蒸饺和面的六大关键步骤,让饺子皮柔软筋道
日本留学语言学专业详解:课程设置、学校推荐及就业前景
逆袭之路:从失败到成功的转变策略