单链表反转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 相关文章推荐
使用PDB模式调试Python程序介绍
Apr 05 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
Python中subprocess的简单使用示例
Jul 28 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
Python+Redis实现布隆过滤器
Dec 08 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
Python控制台实现交互式环境执行
Jun 09 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中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
分析Python读取文件时的路径问题
2018/02/11 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
自荐书范文范例
2014/02/13 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
关于五一放假的通知
2015/08/18 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python 数据可视化之Matplotlib详解
2021/11/02 Python