单链表反转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单线程实现多个定时器示例
Mar 30 Python
Python入门篇之文件
Oct 20 Python
Python使用chardet判断字符编码
May 09 Python
浅谈Python中函数的参数传递
Jun 21 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python实现函数极小值
Jul 10 Python
对django中foreignkey的简单使用详解
Jul 28 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
pygame实现成语填空游戏
Oct 29 Python
详解python字符串驻留技术
May 21 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
mysq GBKl乱码
2006/11/28 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
python绘制高斯曲线
2021/02/19 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
化学相关工作求职信
2013/10/02 职场文书
护理毕业生自荐信范文
2013/12/22 职场文书
矿泉水广告词
2014/03/20 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技