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绘制3d螺旋曲线图实例代码
Dec 20 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
pytorch 输出中间层特征的实例
Aug 17 Python
在pycharm中显示python画的图方法
Aug 31 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
用python批量移动文件
Jan 14 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php上传文件的增强函数
2010/07/21 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
Javascript----文件操作
2007/01/18 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
浅说js变量
2011/05/25 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
行政专员工作职责
2013/12/22 职场文书
药品采购员岗位职责
2014/02/08 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
自荐信格式范文
2015/03/04 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
员工工作表扬信
2015/05/05 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书