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读文件逐行处理的示例代码分享
Dec 27 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python做简单的字符串匹配详解
Mar 21 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Django开发的简易留言板案例详解
Dec 04 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
pygame实现飞机大战
Mar 11 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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项目打包方法
2008/02/18 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php 远程关机操作的代码
2008/12/05 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php学习笔记之面向对象
2014/11/08 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP实现微信退款功能
2018/10/02 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
PHP 8新特性简介
2020/08/18 PHP
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
javascript操作cookie
2017/01/17 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
小学敬老月活动方案
2014/02/11 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
大学生村官个人总结
2015/02/15 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript