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程序的方法
Apr 21 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python环境变量设置方法
Aug 28 Python
Python+Django搭建自己的blog网站
Mar 13 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
基于python监控程序是否关闭
Jan 14 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
pycharm安装及如何导入numpy
Apr 03 Python
Python日志logging模块功能与用法详解
Apr 09 Python
通过cmd进入python的步骤
Jun 16 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 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
实现树状结构的两种方法
2006/10/09 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP实现百度人脸识别
2019/05/06 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
python获取从命令行输入数字的方法
2015/04/29 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
园艺师求职信
2014/03/10 职场文书
班级寄语大全
2014/04/10 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
学校春季防火方案
2014/06/08 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers