Python数据结构之翻转链表


Posted in Python onFebruary 25, 2017

翻转一个链表

样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

一种比较简单的方法是用“摘除法”。就是先新建一个空节点,然后遍历整个链表,依次令遍历到的节点指向新建链表的头节点。

那样例来说,步骤是这样的:

1. 新建空节点:None
2. 1->None
3. 2->1->None
4. 3->2->1->None

代码就非常简单了:

""" 
Definition of ListNode 
 
class ListNode(object): 
 
 def __init__(self, val, next=None): 
  self.val = val 
  self.next = next 
""" 
class Solution: 
 """ 
 @param head: The first node of the linked list. 
 @return: You should return the head of the reversed linked list. 
     Reverse it in-place. 
 """ 
 def reverse(self, head): 
  temp = None 
  while head: 
   cur = head.next 
   head.next = temp 
   temp = head 
   head = cur 
  return temp 
  # write your code here

当然,还有一种稍微难度大一点的解法。我们可以对链表中节点依次摘链和链接的方法写出原地翻转的代码:

""" 
Definition of ListNode 
 
class ListNode(object): 
 
 def __init__(self, val, next=None): 
  self.val = val 
  self.next = next 
""" 
class Solution: 
 """ 
 @param head: The first node of the linked list. 
 @return: You should return the head of the reversed linked list. 
     Reverse it in-place. 
 """ 
 def reverse(self, head): 
  if head is None: 
   return head 
  dummy = ListNode(-1) 
  dummy.next = head 
  pre, cur = head, head.next 
  while cur: 
   temp = cur 
   # 把摘链的地方连起来 
   pre.next = cur.next 
   cur = pre.next 
   temp.next = dummy.next 
   dummy.next = temp 
  return dummy.next 
  # write your code here

需要注意的是,做摘链的时候,不要忘了把摘除的地方再连起来

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python脚本监控docker容器
Apr 27 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python re库的正则表达式入门学习教程
Mar 08 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
解决Python对齐文本字符串问题
Aug 28 Python
python 三元运算符使用解析
Sep 16 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
python实现堆排序的实例讲解
Feb 21 Python
python调用win32接口进行截图的示例
Nov 11 Python
python3中for循环踩过的坑记录
Dec 14 Python
python可视化之颜色映射详解
Sep 15 Python
Python3.10的一些新特性原理分析
Sep 15 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 #Python
python函数的5种参数详解
Feb 24 #Python
Python实现读取文件最后n行的方法
Feb 23 #Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 #Python
Python命令启动Web服务器实例详解
Feb 23 #Python
Python 基础教程之包和类的用法
Feb 23 #Python
python安装oracle扩展及数据库连接方法
Feb 21 #Python
You might like
教你如何使用php session
2013/10/28 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
JQuery toggle使用分析
2009/11/16 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
jquery实现数字输入框
2017/02/22 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python实现矩阵打印
2019/03/02 Python
Python实现最大子序和的方法示例
2019/07/05 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
会计电算化应届生自荐信
2014/02/25 职场文书
大学毕业感言200字
2014/03/09 职场文书
亲属关系公证书
2014/04/08 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
2014年图书室工作总结
2014/12/09 职场文书
举起手来观后感
2015/06/09 职场文书
医院见习总结
2015/06/24 职场文书
2016教师节感恩话语
2015/12/09 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书