#!/usr/bin/env python
#coding = utf-8
class Node:
    def __init__(self,data=None,next = None):
        self.data = data
        self.next = next
 
def rev(link):
    pre = link
    cur = link.next
    pre.next = None
    while cur:
        temp = cur.next
        cur.next = pre
        pre =cur
        cur = temp
    return pre
 
if __name__ == '__main__':
    link = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9)))))))))
    root = rev(link)
    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做好了准备

 

最新文章

  1. Linux I/O多路复用
  2. iOS设置cell选中时文字颜色的变化
  3. js之事件冒泡和事件捕获详细介绍
  4. 图解集合5:不正确地使用HashMap引发死循环及元素丢失
  5. 找到SQL Server数据库历史增长信息
  6. C 结构体位域
  7. SQLServer事务
  8. Oracle软件开发分析
  9. C#学习之LinqtoSql类的简单例子
  10. MVC项目总结(别人的好文章)
  11. POJ1273(最大流)
  12. NMEA-0183协议解析
  13. 笔记:MyBatis Mapper XML文件详解 - Result Maps
  14. Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)
  15. Reachability from the Capital CodeForces - 999E (强连通)
  16. redis info 详解
  17. codeforces553C Love Triangles
  18. div放在li标签中,无法撑开li标签的问题
  19. SpringCloud设定Feign底层实现
  20. [转载]oracle树形查询 start with connect by

热门文章

  1. linux图形和命令界面切换
  2. MATLAB 图像归一化
  3. C++定义自己的异常
  4. Dell灵越 5559笔记本安装固态硬盘 BIOS设置
  5. 利用include动作实现参数传递
  6. spoon 更新数据
  7. 解决Detected problems with API compatibility...
  8. dynamic programming:find max subarray
  9. 莫烦tensorflow(4)-placeholder
  10. L2-001. 紧急救援(最短路的变形)*