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类的用法实例浅析
May 27 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python中http请求方法库汇总
Jan 06 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
python实现决策树分类
Aug 30 Python
利用Python实现原创工具的Logo与Help
Dec 03 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
Python ArgumentParse的subparser用法说明
Apr 20 Python
Python 随机按键模拟2小时
Dec 30 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实现的操作excel类详解
2016/01/15 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
浅谈js中的this问题
2017/08/31 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
python实现的config文件读写功能示例
2019/09/24 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
销售简历自我评价
2014/01/24 职场文书
预备党员党支部意见
2015/06/02 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL