单链表反转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 09 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
深入解析Python中的集合类型操作符
Aug 19 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
python实现图片转字符小工具
Apr 30 Python
Django继承自带user表并重写的例子
Nov 18 Python
python随机生成库faker库api实例详解
Nov 28 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
如何通过安装HomeBrew来安装Python3
Dec 23 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页面间传递参数实例代码
2008/06/05 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
javascript &&和||运算法的另类使用技巧
2009/11/28 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
javascript中的隐式调用
2018/02/10 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
微信小程序云开发之使用云数据库
2019/05/17 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
基于python历史天气采集的分析
2019/02/14 Python
Python I/O与进程的详细讲解
2019/03/08 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Python如何定义有默认参数的函数
2020/08/10 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
党员证明信
2015/06/19 职场文书
小学美术教学反思
2016/02/17 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android