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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
利用Python爬取可用的代理IP
Aug 18 Python
Python MD5加密实例详解
Aug 02 Python
Python编写Windows Service服务程序
Jan 04 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
python openCV自制绘画板
Oct 27 Python
python删除csv文件的行列
Apr 06 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
Python开发简易五子棋小游戏
May 02 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/17 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
javascript中的new使用
2010/03/20 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
微信小程序开发探究
2016/12/27 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
pygame实现飞机大战
2020/03/11 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
教育系毕业生中文求职信范文
2013/10/06 职场文书
儿科护士实习自我鉴定
2013/10/17 职场文书
网络教育自我鉴定
2013/11/01 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
职称评定自我鉴定
2014/03/18 职场文书
企业理念标语
2014/06/09 职场文书
保险专业求职信
2014/07/07 职场文书
体育教师个人总结
2015/02/09 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL