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发送伪造的arp请求
Jan 09 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
用python制作游戏外挂
Jan 04 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
简单了解python中的f.b.u.r函数
Nov 02 Python
Python实现结构体代码实例
Feb 10 Python
Python中无限循环需要什么条件
May 27 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Django中和时区相关的安全问题详解
Oct 12 Python
提取视频中的音频 Python只需要三行代码!
May 10 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执行速度全攻略(上)
2006/10/09 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
Joules美国官网:出色的英国风格
2017/10/30 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
高级护理实习生自荐信
2013/09/28 职场文书
大学生入党思想汇报
2014/01/01 职场文书
务虚会发言材料
2014/12/25 职场文书
小学班主任评语
2014/12/29 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
欢送领导祝酒词
2015/08/12 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
MySQL学习之基础操作总结
2022/03/19 MySQL