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获取文件所在目录和文件名的方法
Jan 12 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
Python查看微信撤回消息代码
Jun 07 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
Python解析多帧dicom数据详解
Jan 13 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
jupyter notebook的安装与使用详解
May 18 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
php和asp语法上的区别总结
2019/05/12 PHP
PHP7 新增常量
2021/03/09 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
详解Python中的type()方法的使用
2015/05/21 Python
Python生成随机数组的方法小结
2017/04/15 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
广州某公司软件工程师面试题
2014/12/22 面试题
详细的大学生创业计划书模板
2014/01/27 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python