单链表反转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日志记录模块实例及改进
Feb 12 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
python3.x实现发送邮件功能
May 22 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python基础学习之类与实例基本用法与注意事项详解
Jun 17 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
python实现梯度下降和逻辑回归
Mar 24 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 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获取网页里所有图片并存入数组的方法
2015/04/06 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
Python中的变量和作用域详解
2016/07/13 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
python线程的几种创建方式详解
2019/08/29 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python 生成器需注意的小问题
2020/09/29 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
移交协议书
2014/08/19 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
学生保证书
2015/01/16 职场文书
高中教师个人工作总结
2015/02/10 职场文书
小学生安全教育主题班会
2015/08/12 职场文书