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 24 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
python+pandas分析nginx日志的实例
Apr 28 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
django前端页面下拉选择框默认值设置方式
Aug 09 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 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遍历目录viewDir函数
2009/12/15 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
使用Python读取大文件的方法
2018/02/11 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python的缺点和劣势分析
2019/11/19 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Python通过字典映射函数实现switch
2020/11/06 Python
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
新浪网技术部笔试题
2016/08/26 面试题
就业自我评价
2014/02/04 职场文书
广告设计应届生求职信
2014/03/01 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书