单链表反转python实现代码示例


Posted in Python onFebruary 08, 2018

单链表的反转可以使用循环,也可以使用递归的方式

1.循环反转单链表

循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可。

单链表反转python实现代码示例

代码:

class ListNode: 
  def __init__(self,x): 
    self.val=x; 
    self.next=None; 
 
def nonrecurse(head):       #循环的方法反转链表 
  if head is None or head.next is None: 
    return head; 
  pre=None; 
  cur=head; 
  h=head; 
  while cur: 
    h=cur; 
    tmp=cur.next; 
    cur.next=pre; 
    pre=cur; 
    cur=tmp; 
  return h; 
   
head=ListNode(1);  #测试代码 
p1=ListNode(2);   #建立链表1->2->3->4->None; 
p2=ListNode(3); 
p3=ListNode(4); 
head.next=p1; 
p1.next=p2; 
p2.next=p3; 
p=nonrecurse(head);  #输出链表 4->3->2->1->None 
while p: 
  print p.val; 
  p=p.next;

结果:

4
3
2
1
>>>

2.递归实现单链表反转

class ListNode: 
  def __init__(self,x): 
    self.val=x; 
    self.next=None; 
 
   
def recurse(head,newhead):  #递归,head为原链表的头结点,newhead为反转后链表的头结点 
  if head is None: 
    return ; 
  if head.next is None: 
    newhead=head; 
  else : 
    newhead=recurse(head.next,newhead); 
    head.next.next=head; 
    head.next=None; 
  return newhead; 
   
head=ListNode(1);        #测试代码 
p1=ListNode(2);         # 建立链表1->2->3->4->None 
p2=ListNode(3); 
p3=ListNode(4); 
head.next=p1; 
p1.next=p2; 
p2.next=p3; 
newhead=None; 
p=recurse(head,newhead);      #输出链表4->3->2->1->None 
while p: 
  print p.val; 
  p=p.next;

运行结果同上。

总结

以上就是本文关于单链表反转python实现代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
用Python给文本创立向量空间模型的教程
Apr 23 Python
详解设计模式中的工厂方法模式在Python程序中的运用
Mar 02 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
python实现的生成word文档功能示例
Aug 23 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
Django配置文件代码说明
Dec 04 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
jupyter notebook的安装与使用详解
May 18 Python
详解pandas映射与数据转换
Jan 22 Python
python爬取豆瓣电影TOP250数据
May 23 Python
深入浅析Django MTV模式
Sep 04 Python
Python测试人员需要掌握的知识
Feb 08 #Python
python实现单向链表详解
Feb 08 #Python
Python生成器以及应用实例解析
Feb 08 #Python
代码分析Python地图坐标转换
Feb 08 #Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 #Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 #Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 #Python
You might like
PHP.vs.JAVA
2016/04/29 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python文件的读写和异常代码示例
2017/10/31 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
python判断自身是否正在运行的方法
2019/08/08 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
sort命令的作用和用法
2013/08/25 面试题
捷科时代的软件测试笔试题
2015/11/09 面试题
财务会计专业个人求职信范本
2014/01/08 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
护士自荐信范文
2015/03/25 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
Redis数据同步之redis shake的实现方法
2022/04/21 Redis