尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

单链表反转:Python/Java/C++三解

单链表反转:Python/Java/C++三解
📅 发布时间:2026/7/1 2:15:50

LeetCode206

给你单链表的头节点head,请你反转链表,并返回反转后的链表。

示例一

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

Python解法

1.数组翻转

class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: if not head: return None temp = [] while head: temp.append(head.val) head = head.next dummy = ListNode() p = dummy for num in reversed(temp): p.next = ListNode(num) p = p.next return dummy.next

2.迭代(原地翻转)

class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: pre = None cur = head while cur: # 先保存下一个节点,防止断链 nxt = cur.next # 翻转当前节点指向 cur.next = pre # 双指针后移 pre = cur cur = nxt # pre最后是新头节点 return pre

3.递归

class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: # 终止条件:空节点/最后一个节点 if not head or not head.next: return head # 递归拿到后半段反转后的头 new_head = self.reverseList(head.next) # 翻转当前节点与后节点的指针 head.next.next = head head.next = None return new_head

Java解法(只展示后两种)

1.迭代

class Solution { public ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = head; while (cur != null) { ListNode nxt = cur.next; // 暂存下一个 cur.next = pre; // 反转指向 pre = cur; // pre后移 cur = nxt; // cur后移 } return pre; } }

2.递归

class Solution { public ListNode reverseList(ListNode head) { // 终止:空 / 最后一个节点 if (head == null || head.next == null) { return head; } ListNode newHead = reverseList(head.next); head.next.next = head; // 后节点指向自己 head.next = null; // 切断原正向指针 return newHead; } }

C++解法

1.迭代

class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre = nullptr; ListNode* cur = head; while (cur) { ListNode* nxt = cur->next; cur->next = pre; pre = cur; cur = nxt; } return pre; } };

2.递归

class Solution { public: ListNode* reverseList(ListNode* head) { if (!head || !head->next) { return head; } ListNode* newHead = reverseList(head->next); head->next->next = head; head->next = nullptr; return newHead; } };

相关新闻

  • 简单选择排序算法
  • OpenClaw 核心组件全解:Gateway、Agent、Skills、Memory 的职责与协作关系
  • 独立开发推荐安装的skills

最新新闻

  • Windows智能体开发:从系统限制到一等公民的范式变革
  • 保姆级教程:在nuScenes数据集上复现MapTracker,从环境配置到一致性指标评测全流程
  • Windows智能体原生集成:开发范式与系统架构的重构之路
  • MySQL用户权限管理全解析:从创建授权到安全实践
  • 出海品牌如何通过ChatGPT品牌优化与AI新闻发布提升全球竞争力
  • 数据分析自学路线图:从零基础到实战,一个月掌握核心技能

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号