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