python如何实现单链表的反转


Posted in Python onFebruary 10, 2020

这篇文章主要介绍了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做好了准备

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用urllib2获取网络资源实例讲解
Dec 02 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
Python提取网页中超链接的方法
Sep 18 Python
python数据处理实战(必看篇)
Jun 11 Python
python逆序打印各位数字的方法
Jun 25 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
python实现图书借阅系统
Feb 20 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
Python数据可视化实现多种图例代码详解
Jul 14 Python
Python内置函数property()如何使用
Sep 01 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
基于python求两个列表的并集.交集.差集
Feb 10 #Python
python实现串口通信的示例代码
Feb 10 #Python
基于Tensorflow高阶读写教程
Feb 10 #Python
python集合删除多种方法详解
Feb 10 #Python
pandas中的数据去重处理的实现方法
Feb 10 #Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 #Python
基于Tensorflow:CPU性能分析
Feb 10 #Python
You might like
PHP日期处理函数 整型日期格式
2011/01/12 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
vue.js中过滤器的使用教程
2017/06/08 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
es6数值的扩展方法
2019/03/11 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python删除字符串中指定字符的方法
2018/08/13 Python
园林资料员岗位职责
2013/12/30 职场文书
教师新年寄语
2014/04/03 职场文书
护士自我推荐信范文
2015/03/24 职场文书
现场施工员岗位职责
2015/04/11 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
工作收入证明模板
2015/06/12 职场文书