脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python实现单链表中元素的反转

Python实现单链表中元素的反转

2022-12-14 11:21bebr Python

这篇文章主要为大家详细介绍了Python实现单链表中元素的反转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

给定一个单链表,将其反转。其实很容易想到,只需要修改每个结点的指针指向:即令后一个结点指向前一个结点,并且将表头指针指向最后一个结点即可。

Python实现单链表中元素的反转

这个过程可以用循环实现,也可以用递归来实现。

1、用循环来实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class LNode:
    def __init__(self, elem):
        self.elem = elem
        self.pnext = None
 
def reverse(head):
    if head is None or head.pnext is None: #如果输入的链表是空或者只有一个结点,直接返回当前结点
        return head
    pre = None #用来指向上一个结点
    cur = newhead = head #cur是当前的结点。newhead指向当前新的头结点
    while cur:
        newhead = cur
        temp = cur.pnext
        cur.pnext = pre #将当前的结点的指针指向前一个结点
        pre = cur
        cur = temp
    return newhead
 
if __name__=="__main__":
    head = LNode(1)
    p1 = LNode(2)
    p2 = LNode(3)
    head.pnext = p1
    p1.pnext = p2
    p = reverse(head)
    while p:
        print(p.elem)
        p = p.pnext

2、用递归来实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class LNode:
    def __init__(self, elem):
        self.elem = elem
        self.pnext = None
 
def reverse(head):
    if not head or not head.pnext:
        return head
    else:
        newhead = reverse(head.pnext)
        head.pnext.pnext = head #令下一个结点的指针指向当前结点
        head.pnext = None #断开当前结点与下一个结点之间的指针指向联系,令其指向空
        return newhead
 
 
if __name__=="__main__":
    head = LNode(1)
    p1 = LNode(2)
    p2 = LNode(3)
    head.pnext = p1
    p1.pnext = p2
    p = reverse(head)
    while p:
        print(p.elem)
        p = p.pnext

以下是图解递归的详细过程:

Python实现单链表中元素的反转

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_34840129/article/details/80776363

延伸 · 阅读

精彩推荐
  • Pythonpython实现简单购物商城

    python实现简单购物商城

    这篇文章主要为大家详细介绍了python实现简单购物商城的相关资料,具有实用性和一定的参考价值,感兴趣的朋友可以参考一下 ...

    百衲本9462020-08-23
  • PythonPython 音视频剪辑快速入门教程

    Python 音视频剪辑快速入门教程

    MoviePy 是一个用于视频编辑的 Python 模块,可用于进行视频的基本操作(如剪切、拼接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效...

    LaoYuanPython10082022-01-07
  • PythonPython NumPy教程之数据类型对象详解

    Python NumPy教程之数据类型对象详解

    每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。本文将通过示例详细讲讲NumPy的数据类型对象,需要的可...

    海拥12152022-08-29
  • PythonPython生成密码库功能示例

    Python生成密码库功能示例

    这篇文章主要介绍了Python生成密码库功能,涉及Python基于随机字符串实现的生成密码功能相关操作技巧,需要的朋友可以参考下...

    那片依然海4132020-11-11
  • Pythonpython xlsxwriter库生成图表的应用示例

    python xlsxwriter库生成图表的应用示例

    这篇文章主要介绍了python xlsxwriter库生成图表的应用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    北京流浪儿11382021-01-22
  • PythonPython3.6正式版新特性预览

    Python3.6正式版新特性预览

    Python3.6计划在2016-12-16正式发布。截止目前,PSF 已经发布了 9 个测试版本。在新版本正式发布之前,我们一起来体验一下都会有哪些重要的新特性。...

    笑虎3652020-09-14
  • Pythonpython opencv旋转图片的使用方法

    python opencv旋转图片的使用方法

    在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的处理。本文就详细的介绍...

    uncle_ll3922021-11-23
  • Python浅析Python __name__ 是什么

    浅析Python __name__ 是什么

    这篇文章主要介绍了Python __name__ 是什么,本文通过实例代码给大家介绍了Python __name__ 的作用,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可...

    Leetao9022020-07-08