Python单链表反转实现详解

码头散步
码头散步
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析了Python中单链表反转的实现方法。通过定义Node类构建链表,利用Reserver函数遍历节点并调整指针指向,将原链表顺序逆置。文中逐步拆解了指针移动、临时节点保存及边界处理等关键步骤,帮助开发者深入理解链表操作的核心逻辑。

Python单链表反转概述

本文主要探讨如何利用Python实现单链表的反转操作。文中提供了详细的示例代码,旨在为读者在学习或实际工作中提供参考价值,建议相关读者仔细阅读并参考。

代码实现与逻辑解析

具体实现代码如下所示:


# coding=utf-8
class Node:
  def __init__(self, data=None, next=None):
    self.data = data
    self.next = next


def Reserver(link):
  pre = link
  cur = link.next
  pre.next = None
  while cur:
    tmp = cur.next
    cur.next = pre
    pre = cur
    cur = tmp
  return pre


if __name__ == "__main__":
  node = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9)))))))))
  root = Reserver(node)

  while root:
    print root.data,
    root = root.next

接下来对Rev函数的实现逻辑进行详细解释:

代码第9至11行完成了初始状态的处理:将原链表的第一个节点转换为新链表的最后一个节点,同时把原链表的第二个节点赋值给变量cur,作为后续遍历的起点。

第13至16行构成了核心循环逻辑:从原链表的第二个节点开始,一直遍历到最后一个节点,逐个翻转所有节点的指向关系。

以下以翻转第二个节点为例进行说明:

执行temp = cur.next操作,将当前节点(cur)的下一个节点(即第3节点)保存到临时变量temp中。这是因为在翻转后,第2节点的next指针将指向第1节点,导致第2节点与第3节点之间的原始连接断开。若不提前保存第3节点,后续将无法通过第2节点访问到第3节点。

执行cur.next = pre操作,将当前节点(第2节点)的next指针指向pre节点(即第1节点),从而完成该节点的指向翻转。

随后进行指针位置的更新:将pre移动到当前cur的位置,同时将cur移动到之前保存的temp位置(即第3节点),具体操作为pre = cur,cur = temp。

完成上述步骤后,指针已定位到第3节点及其前驱,为接下来翻转第3节点做好了准备。

以上即为单链表反转的全部内容,希望这些内容能对读者的学习有所帮助,同时也欢迎大家继续支持本站获取更多技术资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。