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 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python进程和线程用法知识点总结
May 28 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
keras的三种模型实现与区别说明
Jul 03 Python
Python爬取网页信息的示例
Sep 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
PHP 实例化类的一点摘记
2008/03/23 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
python之yield表达式学习
2014/09/02 Python
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python argv用法详解
2016/01/08 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Python版名片管理系统
2018/11/30 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
python圣诞树编写实例详解
2020/02/13 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
实习教师自我鉴定
2013/12/12 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
艺术教育实施方案
2014/05/03 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
2015年电教工作总结
2015/05/26 职场文书
幸福来敲门观后感
2015/06/04 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python