单链表反转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 控制语句
Nov 03 Python
Python探索之自定义实现线程池
Oct 27 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
Python 实现微信防撤回功能
Apr 29 Python
Python动态声明变量赋值代码实例
Dec 30 Python
解决python replace函数替换无效问题
Jan 18 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
浅谈Python 中的复数问题
May 19 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
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php防止sql注入的方法详解
2017/02/20 PHP
php批量删除操作代码分享
2017/02/26 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
js实现五星评价功能
2017/03/08 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
js实现抽奖功能
2020/11/24 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
零基础学Python(一)Python环境安装
2014/08/20 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Python tcp传输代码实例解析
2020/03/18 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
房产公证委托书范本
2014/09/20 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书