新闻中心
c++ 链表反转代码 c++单链表反转算法
链表反转通过调整节点指针实现,提供迭代和递归两种方法。1. 定义节点结构;2. 迭代法用三个指针逐个翻转;3. 递归法从后往前调整指针;4. 测试示例创建链表并反转输出。

链表反转是C++数据结构中的经典问题,核心思路是通过调整每个节点的指针方向来实现反转。下面给出一个完整的单链表反转实现,包含定义、创建、反转和打印操作。
单链表节点定义
首先定义链表节点结构:
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
迭代法反转链表
使用三个指针(prev, curr, next)逐个翻转指向:
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr != nullptr) {
ListNode* next = curr->next; // 保存下一个节点
curr->next = prev; // 反转当前节点指针
prev = curr; // 移动 prev 前进一步
curr = next; // 移动 curr 前进一步
}
return prev; // 新的头节点
}
递归法反转链表
递归到底部后,从后往前调整指针:
N世界
一分钟搭建会展元宇宙
138
查看详情
ListNode* reverseListRecursive(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* newHead = reverseListRecursive(head->next);
head->next->next = head;
head->next = nullptr;
return newHead;
}
完整测试示例
构建一个简单链表 1->2->3->4 并进行反转:
#include <iostream>
using namespace std;
<p>// 打印链表
void printList(ListNode* head) {
while (head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}</p><p>int main() {
// 创建链表 1->2->3->4
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);</p><pre class='brush:php;toolbar:false;'>cout << "原链表: ";
printList(head);
head = reverseL
ist(head); // 反转
cout << "反转后: ";
printList(head);
return 0;}
输出结果为:
原链表: 1 2 3 4
反转后: 4 3 2 1
两种方法时间复杂度都是 O(n),空间上迭代法 O(1),递归法 O(n) 因为调用栈。实际开发中推荐使用迭代法,更稳定且节省内存。
基本上就这些。以上就是c++++ 链表反转代码 c++单链表反转算法的详细内容,更多请关注其它相关文章!
# 推荐使用
# 天河纪录片网站建设
# 网站推广太过于广泛
# 云南移动端seo教程
# 洛阳百度seo关键词排名技术
# 从化媒体整合营销推广
# 抖音seo方案落地
# 网站如何推广排名更靠前
# 网站分析及优化方法论文
# 高明外贸网站推广公司
# 黄石网站建设软件开发
# 中文网
# 相关文章
# node
# 与其他
# 都是
# 如何使用
# 两种
# 数据结构
# 链表
# 递归
# stream
# ios
# c++
# ai
# 栈
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
响应式图片在网页设计中的正确实现方法
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
智慧团建扫码登录入口 智慧团建扫码登录入口官网版
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
浏览器打开即用 美图秀秀网页版入口
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
微信群消息显示延迟如何解决 微信群消息刷新优化方法
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
2025-2030年全球乘用车销量预测:新能源成增长主力
微博网页版直接访问 微博网页版账号管理快速入口
win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】
Tabulator表格日期时间排序问题及自定义解决方案
汽水音乐网页版使用入口_汽水音乐电脑版播放指南
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
12306怎么选座位选到安静区_12306选座安静区域选择策略
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置
Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁
《刺客信条:影》PS5 Pro和Switch 2画面对比
C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责
Angular中单选按钮的正确使用与常见陷阱解析
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
痛风发作了怎么办? 快速止痛和后期饮食调理
自定义Bag-of-Words实现:处理带负号的词汇权重
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
steam官方网页快速访问 steam账号注册全流程
支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样
Go语言中JSON数据解析与字段访问教程
学习通网页版快速入口 学习通官网网页版直接打开
Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
outlook中文官网入口地址 outlook官方中文版直达首页链接
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
J*a最大堆Heapify方法修复:索引计算与边界条件深度解析
CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
深入理解J*aScript Promise异步执行与微任务队列
Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性
新三国志曹操传110级星符试炼夏侯渊极难攻略
优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法
Eclipse怎么运行工程_Eclipse工程运行配置说明


2025-11-28
浏览次数:次
返回列表
ist(head); // 反转
cout << "反转后: ";
printList(head);
return 0;