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函数的实现过程:

line 9-11是将原链表的第一个节点变成了新链表的最后一个节点,同时将原链表的第二个节点保存在cur中

line13-16就是从原链表的第二个节点开始遍历到最后一个节点,将所有节点翻转一遍

以翻转第二个节点为例<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Take flipping the second node as an example</font>*</details>

temp = cur.next是将cur的下一个节点保存在temp中,也就是第节点3,因为翻转后,节点2的下一个节点变成了节点1,原先节点2和节点3之间的连接断开,通过节点2就找不到节点3了,因此需要保存

cur.next = pre就是将节点2的下一个节点指向了节点1

然后pre向后移动到原先cur的位置,cur也向后移动一个节点,也就是pre = cur ,cur =temp

这已准备好翻转节点3。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>This is ready to flip node 3.</font>*</details>

Original: https://www.cnblogs.com/nyist-xsk/p/11719739.html
Author: xushukui
Title: python实现单链表的反转

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7873/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部