单链表的反转可以使用循环,也可以使用递归的方式
循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可。
代码:
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
>>>
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实现代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
本文向大家介绍Java语言实现反转链表代码示例,包括了Java语言实现反转链表代码示例的使用技巧和注意事项,需要的朋友参考一下 问题描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。链表结点如下: 思路1: 要想反转链表,对于结点i,我们要把它的next指向它的前趋,因此我们需要保存前趋结点,同时,如果我们已经把i的next重新赋值,会无法找到i的后继,因此,在重新赋
本文向大家介绍Python3实现的反转单链表算法示例,包括了Python3实现的反转单链表算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python3实现的反转单链表算法。分享给大家供大家参考,具体如下: 反转一个单链表。 方案一:迭代 方案二:递归 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》
本文向大家介绍Python 实现链表实例代码,包括了Python 实现链表实例代码的使用技巧和注意事项,需要的朋友参考一下 Python 实现链表实例代码 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的。 实现清单 实现链表,本质上和语言是无关的。但是灵活度却和实现它的语言密切相关。今天用Python来实现一下,包含如下操作: 生成这样的一个方
本文向大家介绍C语言实现单链表反转,包括了C语言实现单链表反转的使用技巧和注意事项,需要的朋友参考一下 一、理解指针 看懂链表的结构并不是很难,但是一旦把它和指针混在一起,就很容易让人摸不着头脑。所以,要想写对链表代码,首先就要理解好指针。 有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的
本文向大家介绍手写代码:反转链表相关面试题,主要包含被问及手写代码:反转链表时的应答技巧和注意事项,需要的朋友参考一下 参考回答:
本文向大家介绍Java单链表的实现代码,包括了Java单链表的实现代码的使用技巧和注意事项,需要的朋友参考一下 下面是小编给大家分享的一个使用java写单链表,有问题欢迎给我留言哦。 首先定义一个Node类 接下来定义一个单链表,并实现相关方法: 最后我们可以通过测试类来做相关测试: 至此,对单链表的操作就笔记到这里了。 以上所述是小编给大家介绍的Java单链表的实现代码,希望对大家有所帮助,如果