翻转链表的三种方法(python实现)
2017-12-11 09:17
561 查看
具体方法来自看图理解单链表的反转,以下为该博客中方法的python实现以及测试
方法一:利用三个指针逐个翻转
方法二:尾插法翻转
方法三:递归
节点定义及测试用例:
方法一:利用三个指针逐个翻转
def func1(head): p = head q = head.next p.next = None while q: r = q.next q.next = p p = q q = r return p
方法二:尾插法翻转
def func2(head): p = head.next while p.next: q = p.next p.next = q.next head.next = q q.next = p p.next = head head = head.next p.next.next = None return head
方法三:递归
def func3(head): if head.next == None: return head new_head = func3(head.next) head.next.next = head head.next = None return new_head
节点定义及测试用例:
#节点定义 class LNode: def __init__(self, x): self.val = x self.next = None #测试用例 if __name__ == '__main__': l1 = LNode(3) l1.next = LNode(2) l1.next.next = LNode(1) l1.next.next.next = LNode(99) l = func3(l1) print l.val, l.next.val, l.next.next.val, l.next.next.next.val
相关文章推荐
- 【转载】Python中如何高效实现两个字典合并,三种方法比较。
- 【机器学习算法-python实现】协同过滤(cf)的三种方法实现
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- 三种方法实现链表的插入
- 图像灰度化的三种方法及matlab,c++,python实现
- 【机器学习算法-python实现】协同过滤(cf)的三种方法实现
- python实现下载文件的三种方法
- 用python实现从1加到100的三种方法: for循环,while循环,导入模块法
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- C++实现链表翻转的两种方法
- 【机器学习算法-python实现】协同过滤(cf)的三种方法实现
- 单链表翻转的多种方法实现(c语言)
- 一个python实现的有魔法方法(magic method)的单链表(静态链表)
- C++链表类的三种使用方法(学生信息管理系统的实现)
- cocos2dx之实现扑克牌翻转效果的三种方法
- cocos2dx之实现扑克牌翻转效果的三种方法
- Python中实现map+链表功能的方法
- 冒泡排序的三种实现方法-----python
- 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
- python实现每次处理一个字符的三种方法