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中for循环下的索引变量的作用域
Apr 15 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
浅谈python新式类和旧式类区别
Apr 26 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
Python lambda表达式原理及用法解析
Aug 18 Python
python包的导入方式总结
Mar 02 Python
Django rest framework如何自定义用户表
Jun 09 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以及MYSQL日期比较方法
2012/11/29 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
wxPython窗口中文乱码解决方法
2014/10/11 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python实现最常见加密方式详解
2019/07/13 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
2014基层党员批评与自我批评范文
2014/09/24 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
各种货币符号快捷输入
2022/02/17 杂记