反转链表一般有两种实现方式,一种是循环,另外一种是递归,前几天做了一个作业,用到这东西了。

这里就做个记录,方便以后温习。

  递归的方法:

  

class Node:
def __init__(self,init_data):
self.data = init_data
self.next = None def get_data(self):
return self.data def get_next(self):
return self.next def set_data(self,new_data):
self.data = new_data def set_next(self,new_next):
self.next = new_next lista = Node(99)
listc = Node(49)
listd = Node(39)
liste = Node(29)
listf = Node(9)
lista.next = listc
listc.next = listd
listd.next = liste def recurse(mylist,newlist):
if mylist is None:
return;
if mylist.next is None:
newlist = mylist
else:
newlist = recurse(mylist.next,newlist)
mylist.next.next = mylist
mylist.next = None return newlist listg = None
plist = recurse(lista,listg)
def list_print(listd):
while listd is not None:
print listd.data
listd = listd.next print "elist is:"
list_print(liste)
print "reverse list is:"
list_print(plist)

  运行结果:

elist is:
29
39
49
99
reverse list is:
29
39
49
99

python中使用递归实现反转链表的更多相关文章

  1. python中的递归

    python中的递归 关注公众号"轻松学编程"了解更多. 文章更改后地址:传送门 间接或直接调用自身的函数被称为递归函数. 间接: def func(): otherfunc() ...

  2. python中的递归问题,求圆周率

    以上面一个公式为例: import numpy as np def getPi(n): if n == 0: return np.power(-1,n)*(1.0/(2*n+1)) else: ret ...

  3. Python中解决递归限制的问题

    在做某些算法时,使用递归会出现类似下面的报错: RuntimeError: maximum recursion depth exceeded python默认的递归深度是很有限的,大概是900多的样子 ...

  4. 19.递归法和非递归法反转链表[ReverseLinkedList]

    [题目] 输入一个链表的头结点,反转该链表,并返回反转后链表的头结点. [非递归]  C++ Code  12345678910111213141516   listnode *Reverse_Ite ...

  5. python中的递归小实例

    #1.n! def fact(n): if n == 0: return 1 else: return n*fact(n-1)print(fact(10)) #2.斐波那契数列F(n)=F(n-1)+ ...

  6. Python中使用递归输出嵌套列表并转化为大写

  7. 【剑指offer】递归循环两种方式反转链表

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25737023 本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上AC. 题目描写 ...

  8. 2021字节跳动校招秋招算法面试真题解题报告--leetcode206 反转链表,内含7种语言答案

    206.反转链表 1.题目描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1-> ...

  9. 【LeetCode题解】206_反转链表(Reverse-Linked-List)

    目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以访问我的 git ...

随机推荐

  1. 游标遍历所有数据库循环执行修改数据库的sql命令

    MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历. 先来说思路: 1,首先需要查询出所有的数据库: select [name] f ...

  2. bitcms内容管理系统 3.1版源码发布

    开源bitcms内容管理系统采用ASP.NET MVC5+MySql的组合开发,更适应中小型系统低成本运行. bitcms的主要功能 1.重写了APS.NET MVC的路由机制.bitcms使用路由参 ...

  3. 选择客栈noip2011

    哈,没想到吧.今天居然有两篇(算什么,厕所读物吗 选择客栈 本题的更优解请跳转zt 这题11年,刚改2day. 对于30% 的数据,有 n ≤100: 对于50% 的数据,有 n ≤1,000: 对于 ...

  4. javaweb学习总结(五)——Servlet开发(一)(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3760336.html 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun ...

  5. RxJava开发精要6 - 组合Observables

    原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发人员头条享有独家 ...

  6. 九度OJ 1205 N阶楼梯上楼问题 (DP)

    题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2817 解决:1073 题目描写叙述: N阶楼梯上楼问题:一次能够走两阶或一阶.问有多少种上楼方式. (要 ...

  7. 获取手机是否root信息

    private String isRoot(){ String bool = "Root:false"; try{ if ((!new File("/system/bin ...

  8. 【Sqlserver系列】CAST和CONVERT

    1   概述 本篇文章主要讲解SqlServer中类型转换涉及的两个函数:CAST和CONVERT. 2   具体内容 2.1  CAST (1)作用:将一种数据类型的表达式转换为另一种数据类型的表达 ...

  9. springMVC学习总结(三)数据绑定

    springMVC学习总结(三)数据绑定 一.springMVC的数据绑定,常用绑定类型有: 1.servlet三大域对象: HttpServletRequest HttpServletRespons ...

  10. 抓包工具 fiddler

    1. 抓包软件 TCP 外挂: 1. 解包工具  2.抓包工具 HTTP 1.前后端交互过程 2.学习的作用 3.模拟网络情况 2 http client server 没有加密 https 证书 非 ...