• 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就是从原链表的第二个节点开始遍历到最后一个节点,将所有节点翻转一遍
    
    以翻转第二个节点为例
    
    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做好了准备
    
    
  • 相关阅读:
    创建目录(单个目录和多级子目录)方法
    C++中创建目录
    C/C++中判断某一文件或目录是否存在
    Eclipse快捷键大全(转载)
    关于注册模型失败的分析
    框架Model注册失败
    nop中导航属性的写法
    CodeFirst中导航属性的代码实现 理解
    MVC下验证码
    Androidi学习笔记 1
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/11719739.html
Copyright © 2020-2023  润新知