python实现反转部分单向链表


Posted in Python onSeptember 27, 2018

题目:

给定一个单链表的头指针 head, 以及两个整数 a 和 b,在单链表中反转 linked_list[a-b] 的结点,然后返回整个链表的头指针。
例如:
单链表[1000, 5, 12, 100, 45, ‘cecil', 999],
a = 4, b = 6,
返回的链表是[1000, 5, 12, 100, 999, ‘cecil', 45],也就是说,
a 和 b分别为索引值。如果a 和 b 超过了索引范围就返回错误。

代码:

我写的不够简洁,比较繁琐,但是能跑通,繁琐的原因在于我使用了 for 循环,对于 a == 0 的情况 for 循环无法识别。

def reverse_part_linked_list(head, a, b): # 反转部分链表结点,a, b分别为索引值
    if head == 0:
      print "Empty linked list. No need to reverse."
      return head
    p = head
    length = 1
    while p != 0:
      length += 1
      p = p.next
    if length == 1:
      print "No need to reverse."
      return head
    if a < 0 or b > length-1 or a >= b:
      raise Exception("The given 'from' value and 'to' value is wrong.")
    p = head

    if a == 0: # 由于 for 循环中 xrange 的范围问题,我就分情况写了。
      tail, head = p, p
      pre = 0
      for _ in xrange(a, b+1):
        p = p.next
        head.next = pre
        pre = head
        head = p
      tail.next = p
      return head
    else:
      for _ in xrange(1, a):
        p = p.next
      front, tail, head = p, p, p
      p = p.next
      pre = 0
      for _ in xrange(a+1, b+2):
        p = p.next
        head.next = pre
        pre = head
        head = p
      front.next = pre
      tail.next = p
      return head

分析:

核心依然是反转链表的指针问题,均是一遍循环,时间复杂度o(n),空间复杂度为若干个变量。

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

Python 相关文章推荐
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
对pandas中apply函数的用法详解
Apr 10 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
May 13 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python json格式化打印实现过程解析
Jul 21 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
基于python实现操作redis及消息队列
Aug 27 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
python八皇后问题的解决方法
Sep 27 #Python
python判断数字是否是超级素数幂
Sep 27 #Python
Flask实现跨域请求的处理方法
Sep 27 #Python
python环形单链表的约瑟夫问题详解
Sep 27 #Python
transform python环境快速配置方法
Sep 27 #Python
python如何求解两数的最大公约数
Sep 27 #Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 #Python
You might like
YII实现分页的方法
2014/07/09 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
javascript动态加载二
2012/08/22 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
python生成指定尺寸缩略图的示例
2014/05/07 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
python烟花效果的代码实例
2020/02/25 Python
python logging模块的使用
2020/09/07 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
Python tkinter实现日期选择器
2021/02/22 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
How TDD works
2012/09/30 面试题
招商经理岗位职责
2013/11/16 职场文书
岗位竞聘书范文
2014/03/31 职场文书
感恩教师节主题班会
2015/08/12 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server