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实现删除文件与目录的方法
Nov 10 Python
RC4文件加密的python实现方法
Jun 30 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
Django实现表单验证
Sep 08 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
python的reverse函数翻转结果为None的问题
May 11 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python线程优先级队列知识点总结
Feb 28 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 xml 入门学习资料
2011/01/01 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
JavaScript 程序编码规范
2010/11/23 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python 字符串追加实例
2019/07/20 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
总监职责范文
2013/11/09 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
企业文化理念标语
2014/06/10 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
政审证明范文
2015/06/19 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Python数据结构之队列详解
2022/03/21 Python
OpenFeign实现远程调用
2022/08/14 Java/Android