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修改注册表终止360进程实例
Oct 13 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
TensorFlow实现模型评估
Sep 07 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
pandas的排序和排名的具体使用
Jul 31 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
JavaScript对象的property属性详解
2014/04/01 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
新手简单了解vue
2019/05/29 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
python创建关联数组(字典)的方法
2015/05/04 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python实现FM算法解析
2019/06/18 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
详解Python 循环嵌套
2020/07/09 Python
如何把python项目部署到linux服务器
2020/08/26 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
经销商会议欢迎词
2014/01/11 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
Python 正则模块详情
2021/11/02 Python