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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
python读取html中指定元素生成excle文件示例
Apr 03 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
简单实现python进度条脚本
Dec 18 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
pytorch训练imagenet分类的方法
Jul 27 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
python中numpy.empty()函数实例讲解
Feb 05 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python中@property的理解和使用示例
2019/06/11 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
python爬取招聘要求等信息实例
2020/11/20 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
华为的Java面试题
2014/03/07 面试题
什么是反射
2012/03/17 面试题
高中体育教学反思
2014/01/24 职场文书
社区护士演讲稿
2014/08/27 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
安全教育的主题班会
2015/08/13 职场文书
七年级生物教学反思
2016/02/20 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
Pygame Draw绘图函数的具体使用
2021/11/17 Python
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android