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海龟绘图实例教程
Jul 24 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
django中静态文件配置static的方法
May 20 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
pymysql 开启调试模式的实现
Sep 24 Python
python numpy--数组的组合和分割实例
Feb 24 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
用Python开发app后端有优势吗
Jun 29 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
非常漂亮的JS代码经典广告
2007/10/21 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
node使用request请求的方法
2019/12/20 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Python的标准模块包json详解
2017/03/13 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python实现邮件发送功能
2019/08/10 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
高级销售求职信
2014/02/21 职场文书
学校课外活动总结
2014/05/08 职场文书
家长会欢迎标语
2014/06/24 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
导游词之长城八达岭
2019/09/24 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers