单链表反转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执行get提交的方法
Apr 29 Python
Python之re操作方法(详解)
Jun 14 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
Python zip()函数用法实例分析
Mar 17 Python
python实现电子产品商店
Feb 26 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
int在python中的含义以及用法
Jun 27 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
教你用python控制安卓手机
May 13 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
php单链表实现代码分享
2016/07/04 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
jQuery 白痴级入门教程
2009/11/11 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
Python命名空间详解
2014/08/18 Python
跟老齐学Python之用Python计算
2014/09/12 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
详解python中的index函数用法
2019/08/06 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
学年自我鉴定
2014/01/16 职场文书
迟到检讨书大全
2014/01/25 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
考试没考好检讨书
2015/05/06 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
了解Redis常见应用场景
2021/06/23 Redis