单链表反转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 字符串定义
Sep 25 Python
Python异常处理总结
Aug 15 Python
Python中每次处理一个字符的5种方法
May 21 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
Python读取二进制文件代码方法解析
Jun 22 Python
Python建造者模式案例运行原理解析
Jun 29 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
js html实现计算器功能
2018/11/13 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python 线程的五个状态
2020/09/22 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
项目经理的岗位职责
2013/11/23 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
公司介绍信范文
2015/01/31 职场文书
化验室岗位职责
2015/02/14 职场文书
小学感恩节活动总结
2015/03/24 职场文书
Python爬取某拍短视频
2021/06/11 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js