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进阶教程之词典、字典、dict
Aug 29 Python
Python实现栈的方法
May 26 Python
python中__slots__用法实例
Jun 04 Python
python使用itchat实现手机控制电脑
Feb 22 Python
Python3.7中安装openCV库的方法
Jul 11 Python
python实现控制台打印的方法
Jan 12 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
Pytorch 实现权重初始化
Dec 31 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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语法(2)
2006/10/09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP7内核之Reference详解
2019/03/14 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
养殖项目策划书范文
2014/01/13 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
asyncio异步编程之Task对象详解
2022/03/13 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA