全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何反转链表_C++单链表反转算法的递归与非递归实现

反转链表可通过迭代和递归实现。迭代法用三个指针逐个翻转,时间O(n)空间O(1);递归法利用栈回溯处理后续节点,逻辑清晰但空间O(n),易栈溢出。生产环境推荐迭代,学习递归思想可用递归。

反转链表是C++数据结构中的经典问题,常用于面试和实际开发中。单链表由于其单向性,反转操作需要调整每个节点的指针方向。下面介绍两种常用方法:非递归(迭代)和递归实现。

非递归方式反转链表

使用三个指针分别指向当前节点、前一个节点和下一个节点,逐个翻转指针方向。

核心思路:从头节点开始,将每个节点的 next 指向前驱节点,直到遍历完整个链表。

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

ListNode reverseList(ListNode head) { ListNode prev = nullptr; // 前一个节点 ListNode curr = head; // 当前节点 while (curr != nullptr) { ListNode* nextTemp = curr->next; // 临时保存下一个节点 curr->next = prev; // 反转指针 prev = curr; // 移动 prev curr = nextTemp; // 移动 curr } return prev; // 新的头节点 }

该方法时间复杂度为 O(n),空间复杂度为 O(1),效率高且稳定。

递归方式反转链表

利用函数调用栈回溯的特性,在递归到底后逐层反转指针。

关键点:假设当前节点之后的所有节点已经反转完成,只需处理当前节点与后续节点的关系。

ListNode* reverseListRecursive(ListNode* head) {
    // 终止条件:空节点或只有一个节点
    if (head == nullptr || head->next == nullptr) {
        return head;
    }
    // 递归反转后面的节点
    ListNode* newHead = reverseListRecursive(head->next);
    // 让后一个节点指向当前节点
    head->next->next = head;
    // 当前节点的 next 置为空,防止成环
    head->next = nullptr;
    return newHead;  // 返回新的头节点
}

递归写法简洁,但会消耗 O(n) 的栈空间,对于极长链表可能引发栈溢出。

两种方法对比与使用建议

  • 迭代法更安全,适合生产环境,尤其在链表较长时优先选用
  • 递归法逻辑清晰,适合理解递归思想,但在性能要求高或资源受限场景慎用
  • 两者时间复杂度均为 O(n),但空间开销不同

基本上就这些。掌握这两种写法有助于深入理解指针操作和递归机制。


# c++  # node  #   # 递归  # 指针  # 数据结构  # 算法  # 链表  # 两种  # 迭代  # 法利  # 遍历  # 只需  # 但在  # 均为 


相关文章: 深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在万网开始建站?分步指南解析  如何制作一个表白网站视频,关于勇敢表白的小标题?  宝塔新建站点为何无法访问?如何排查?  已有域名如何快速搭建专属网站?  建站主机类型有哪些?如何正确选型  重庆网站制作公司哪家好,重庆中考招生办官方网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何在VPS电脑上快速搭建网站?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  公众号网站制作网页,微信公众号怎么制作?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  家庭建站与云服务器建站,如何选择更优?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  临沂网站制作企业,临沂第三中学官方网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何正确选择百度移动适配建站域名?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站之星24小时客服电话如何获取?  如何在IIS管理器中快速创建并配置网站?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站之星如何防范黑客攻击与数据泄露?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何高效完成自助建站业务培训?  如何通过VPS建站实现广告与增值服务盈利?  如何在宝塔面板中创建新站点?  建站上市公司网站建设方案与SEO优化服务定制指南  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何快速搭建安全的FTP站点?  如何用花生壳三步快速搭建专属网站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  ui设计制作网站有哪些,手机UI设计网址吗?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何在IIS7中新建站点?详细步骤解析  深圳网站制作案例,网页的相关名词有哪些?  制作宣传网站的软件,小红书可以宣传网站吗?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何选择高效稳定的ISP建站解决方案?  定制建站流程解析:需求评估与SEO优化功能开发指南  Swift中switch语句区间和元组模式匹配  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何在服务器上配置二级域名建站?  如何通过VPS搭建网站快速盈利?  广州美橙建站如何快速搭建多端合一网站?  如何配置WinSCP新建站点的密钥验证步骤?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  建站之星安装后界面空白如何解决? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。