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

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

服务器之家 - 脚本之家 - Python - python版单链表反转

python版单链表反转

2022-12-14 11:26xiaoming_tju Python

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

本文为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考。

代码如下:

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)

原始单链表:

python版单链表反转

反转后单链表:

python版单链表反转

反转过程如下:

python版单链表反转

第一步:next = head.next
将 head.next 赋值给 next 变量,即next 指向了节点2,先将节点2 保存起来。

第二步:head.next = pre (初始pre==None)
将 pre 变量赋值给 head.next,即 此时节点1 指向了 None

第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点1,将节点1 设为“上一个节点”

第四步:head = next
将 next 赋值给 head,即 head 指向了节点2,此时节点2 设为“头节点”

第一次循环完毕,进入第二次循环,如下图:

python版单链表反转

第一步:next = head.next
将 head.next 赋值给 next 变量,即 next 指向了节点3,先将节点3 保存起来。

第二步:head.next = pre (此时的pre已经不为None)
将 pre 赋值给 head.next,pre 在上一次循环的时候指向了节点1,那么这一步的意义就是节点2 指向了 节点1,完成1和2节点的反转。

第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点2,将节点2 设为“上一个节点”

第四步:head = next
将 next 赋值给 head,即 head 指向了节点3。此时节点3 设为“头节点”

第二次循环完毕,以此类推!第三次第四次第五次循环。最后反转成如下图

python版单链表反转

若干注意点:

(1)帮助记忆图:

python版单链表反转

(2)当前头节点的下一个节点一定要保存(比如:当前头节点为2,先将节点3 保存起来)

(3)实现反转的key point: head.next = pre

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

原文链接:https://blog.csdn.net/gongliming_/article/details/88712221

延伸 · 阅读

精彩推荐
  • Pythonpython的内存管理机制

    python的内存管理机制

    这篇文章主要为大家介绍python的内存管理机制,先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲,有需要的朋友可以参考ixa...

    CBDoctor4282020-10-09
  • Pythonpandas之query方法和sample随机抽样操作

    pandas之query方法和sample随机抽样操作

    这篇文章主要介绍了pandas之query方法和sample随机抽样操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    风雪云侠12022021-09-15
  • Pythonpython实现多人聊天服务器以及客户端

    python实现多人聊天服务器以及客户端

    这篇文章主要为大家详细介绍了python实现多人聊天服务器以及客户端,带图形化界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    一个没有姓名的咸鱼10912021-12-11
  • PythonDjango 中的Timezone 处理操作

    Django 中的Timezone 处理操作

    这篇文章主要介绍了Django 中的Timezone 处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    何惜戈6742021-10-08
  • Python使用python+pygame开发消消乐游戏附完整源码

    使用python+pygame开发消消乐游戏附完整源码

    消消乐小游戏相信大家都玩过,大人小孩都喜欢玩的一款小游戏,那么基于程序是如何实现的呢?今天带大家,用python+pygame来实现一下这个花里胡哨的消消...

    LexSaints7652021-11-29
  • Python11个并不被常用但对开发非常有帮助的Python库

    11个并不被常用但对开发非常有帮助的Python库

    这篇文章主要介绍了11个并不被常用但对开发非常有帮助的Python库,这些库大都被放在Github上开源、并且经过一段时间的编写和维护,对Python开发有一定的帮...

    Greg3472020-05-26
  • PythonOpenCV-Python模板匹配人眼的实例

    OpenCV-Python模板匹配人眼的实例

    模板匹配是指在当前图像A内寻找与图像B最相似的部分,本文详细的介绍了OpenCV-Python模板匹配人眼的实例,感兴趣的可以了解一下...

    一天一篇Python库6202021-11-26
  • Pythonpython关于集合的知识案例详解

    python关于集合的知识案例详解

    这篇文章主要介绍了python关于集合的知识,包括集合的基本信息和集合的基本操作,通过案例详解给大家介绍的非常详细,需要的朋友可以参考下...

    yun67811772021-11-17