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 相关文章推荐
用C++封装MySQL的API的教程
May 06 Python
Python实现删除文件但保留指定文件
Jun 21 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
python3的输入方式及多组输入方法
Oct 17 Python
python 拼接文件路径的方法
Oct 23 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
代码详解django中数据库设置
Jan 28 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
Python input函数使用实例解析
Nov 22 Python
django框架两个使用模板实例
Dec 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通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
python 获取网页编码方式实现代码
2017/03/11 Python
对python中dict和json的区别详解
2018/12/18 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Python matplotlib可视化实例解析
2020/06/01 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
python 如何区分return和yield
2020/09/22 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
delegate与普通函数的区别
2014/01/22 面试题
服务承诺口号
2014/05/22 职场文书
英语专业自荐书
2014/06/13 职场文书
爱护公物演讲稿
2014/09/09 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle