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合并文本文件示例
Feb 07 Python
Python标准库urllib2的一些使用细节总结
Mar 16 Python
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
python读取和保存视频文件
Apr 16 Python
python中cPickle类使用方法详解
Aug 27 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Pandas实现一列数据分隔为两列
May 18 Python
Python urllib2运行过程原理解析
Jun 04 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
七个Python必备的GUI库
Apr 27 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
python自动格式化json文件的方法
2015/03/11 Python
python实现发送邮件及附件功能
2021/03/02 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
python 字符串和整数的转换方法
2018/06/25 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Python中的整除和取模实例
2020/06/03 Python
python如何导入依赖包
2020/07/13 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
上课睡觉检讨书
2014/01/28 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
黄金酒广告词
2014/03/21 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2015年化验室工作总结
2015/04/23 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL