Python 实现单向链表,和单向链表的反转

简介: 链表是一种数据结构,每个节点存储相邻节点的位置信息。单链表中的节点仅存储下一节点的位置。通过Python实现单链表,定义`ListNode`类并关联节点可创建链表。例如,创建A->B->C的链表后,可通过反转函数`reverse`将链表反转为CBA。代码展示了如何实现和操作单链表。
链表的定义

链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息

单向链表的实现

python

代码解读

复制代码

class ListNode:
    def __init__(self, val):
        self.val = val
        self.next = None

要实现单向链表只需要把几个节点关联起来就可以了,把一个节点的next设置为另一个节点就可以了,例如创建一个A->B->C 的单向链表可以这么写:

python

代码解读

复制代码

 first_node = ListNode("A")
 second_node = ListNode("B")
 third_node = ListNode("C")
 first_node.next = second_node
 second_node.next = third_noe

first_node 就是这个链表的表头,他们3个一起组成了一个单向链表

单向链表反转

python

代码解读

复制代码

class Solution:
    def reverse(self, head):
        prev = None
        current = head
        while current:
            middle, current.next = current.next, prev
            prev, current = current, middle
        return prev

反转的时候,先实例化Solution对象,然后调用reverse函数把链表的表头first_node 传进去:

python

代码解读

复制代码

solution = Solution()
result = solution.reverse(first_node)

如果你想查看这个链表的内容顺序,可以这样写:

python

代码解读

复制代码

print(result.val, result.next.val, result.next.next.val)

终端输出结果为CBA,符合要求


转载来源:https://juejin.cn/post/6941277556905607182

目录
打赏
0
6
6
0
171
分享
相关文章
Python 实现反转、合并链表有啥用?
大家好,我是V哥。本文介绍Python实现反转链表和合并链表的应用场景及代码实现。反转链表适用于时间序列数据展示、回文链表判断等;合并链表则用于大规模数据排序、数据库查询结果集合并等。通过迭代和递归方法实现反转链表,以及合并两个或多个有序链表的算法,帮助开发者解决实际问题。关注V哥,了解更多实用编程技巧。 先赞再看后评论,腰缠万贯财进门。
|
3月前
|
探索 Python 中链表的实现:从基础到高级
链表是一种由节点组成的基础数据结构,每个节点包含数据和指向下一个节点的引用。本文通过Python类实现单向链表,详细介绍了创建、插入、删除节点等操作,并提供示例代码帮助理解。链表在处理动态数据时具有高效性,适用于大量数据变动的场景。文章为初学者提供了全面的入门指南,助你掌握链表的核心概念与应用。
110 0
|
8月前
|
【Leetcode刷题Python】328. 奇偶链表
在不使用额外空间的情况下,将链表中的奇数和偶数索引节点重新排序的方法,并提供了相应的Python实现代码。
64 0
|
8月前
|
【Leetcode刷题Python】25.K 个一组翻转链表
解决LeetCode "K 个一组翻转链表" 问题的三种方法:使用栈、尾插法和虚拟节点顺序法,并提供了每种方法的Python实现代码。
55 0
|
6月前
|
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
6月前
|
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
58 0
|
8月前
|
【Leetcode刷题Python】114. 二叉树展开为链表
LeetCode上114号问题"二叉树展开为链表"的Python实现,通过先序遍历二叉树并调整节点的左右指针,将二叉树转换为先序遍历顺序的单链表。
41 3
【Leetcode刷题Python】114. 二叉树展开为链表
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(二)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
8月前
|
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
78 5
|
8月前
|
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
69 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等