Python单链表反转实现详解与代码解析

宋时安
宋时安
发布时间:2026-10-15| 3人浏览过
原创

本文详细介绍Python中单链表反转的具体实现方法。通过定义Node类构建链表,利用pre、head、next三个指针变量在循环中逐步调整节点指向,实现链表的逆序排列。文章包含完整的Python代码示例及分步图解,详细解析了节点保存、指针重定向及边界条件处理等关键步骤,适合Python初学者理解链表操作逻辑。

Python单链表反转概述

本文分享使用Python语言实现单链表反转的具体代码方案,供读者参考学习。

具体实现代码如下所示:

核心代码实现

class Node(object):
    def __init__(self, elem, next_=None):
        self.elem = elem
        self.next = next_
 
def reverseList(head):
    if head == None or head.next==None:  # 若链表为空或者仅一个数就直接返回
        return head 
    pre = None
    next = None
    while(head != None): 
        next = head.next     # 1
        head.next = pre     # 2
        pre = head      # 3
        head = next      # 4
    return pre

if __name__ == '__main__':
    l1 = Node(3)    # 建立链表3->2->1->9->None
    l1.next = Node(2)
    l1.next.next = Node(1)
    l1.next.next.next = Node(9)
    l = reverseList(l1)
    print (l.elem, l.next.elem, l.next.next.elem, l.next.next.next.elem)

首先展示原始单链表的结构状态。

接着展示完成反转操作后的单链表结构。

反转过程详细解析

以下是链表反转的具体执行过程解析:

第一步:执行 next = head.next。将 head 节点的下一个节点赋值给 next 变量,即 next 指向节点2,此步骤旨在预先保存节点2,防止后续操作丢失连接。

第二步:执行 head.next = pre。将 pre 变量的值赋给 head.next,由于初始状态下 pre 为 None,此时节点1的next指针指向None,完成第一个节点的断开。

第三步:执行 pre = head。将当前 head 节点赋值给 pre,即 pre 指向节点1,此时节点1被标记为“上一个节点”,用于后续节点的反向连接。

第四步:执行 head = next。将 next 节点赋值给 head,即 head 指向节点2,此时节点2被更新为新的“头节点”,准备进行下一轮迭代。

第一次循环结束,进入第二次循环,具体状态变化如下图所示:

第一步:执行 next = head.next。将当前 head 的下一个节点赋值给 next,即 next 指向节点3,预先保存节点3以保留链表后续连接。

第二步:执行 head.next = pre。此时 pre 不为 None,在上一次循环中 pre 已指向节点1。此步骤将节点2的next指针指向节点1,从而完成节点1和节点2之间的反转连接。

第三步:执行 pre = head。将当前 head 节点赋值给 pre,即 pre 指向节点2,将节点2更新为“上一个节点”,为下一个节点的反转做准备。

第四步:执行 head = next。将 next 节点赋值给 head,即 head 指向节点3,此时节点3被设为新的“头节点”,继续向后遍历。

第二次循环结束,后续第三次、第四次及第五次循环依此类推,直至链表遍历完毕,最终反转结果如下图所示。

关键注意事项

在实现过程中,有若干关键注意事项需要掌握:

(1) 辅助记忆图示:可通过参考相关示意图理解指针移动逻辑。

(2) 必须保存当前头节点的下一个节点:例如当当前头节点为2时,需先将节点3保存至 next 变量中,避免链表断裂。

(3) 实现反转的核心关键点:head.next = pre,即通过修改当前节点的next指针指向前一个节点来实现反转。

以上就是Python单链表反转的全部内容,希望能为读者的学习提供有益帮助,欢迎继续支持本站获取更多技术资源。

相关标签:

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

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 算法库。