python递归反转列表,单链表反转python
本文主要介绍python递归实现链表的快速反转。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
本文分享python递归实现链表快速求逆的具体代码,供大家参考。具体内容如下
案例:实现下面的链表进行倒排
源代码:
Node用于表示队列中的一个节点;它包含两个域。
表示val节点的值。
Next指向下一个节点
#定义链表的数据结构
类别节点:
def __init__(self,val):
self.next=无
self.val=val
Classutility3360 #为操作生成一个链表。
def __init__(self):
self.head=无
self.tail=无
及格
def createList(self,nodeNum):
如果节点号=0:
不返回
head=无
val=0
节点=无
而节点号0:
#如果头指针为空,代码首先构造队列头;如果没有,则代码构造节点对象,然后用前一个节点的下一个指针指向当前节点,从而将多个节点串联成一个队列。
如果磁头不是:
头=节点(val)
节点=头部
else:
node.next=Node(val)
node=node.next
self.tail=node
val=1
nodeNum -=1
self.head=头
回程头
定义打印列表(自身,头部):
虽然头不是非我:
打印(“{0}-”。format(head.val),end= )
头=头。下一个
打印(空)
类别ListReverse:
def __init__(self,head):
self.listHead=head
self.newHead=None
def recursiveReverse(self,node):
#如果队列为空或只有一个节点,则队列已被反转。
如果node为None或node.next为None:
self.newHead=node
返回节点
如果队列包含多个节点,那么通过递归调用反转当前节点之后的所有节点。
然后将当前节点后的节点的下一个指针指向自己,从而完成整个列表中所有节点的事业。
head=self . recursive reverse(node . next)
head.next=node
node.next=无
返回节点
def getReverseList(self):
ListHead是原始队列的头节点。执行recursiveReverse后,newHead指向新列表的头节点。它
对应的其实是原列表的尾节点,头指向新列表的尾节点。
self . recursive reverse(self . list head)
回归自我
utility=ListUtility()
head=utility.createList(10)
utility.printList(head)
#执行反向算法,然后再次打印队列,前后对比,看结果是否成功。
reverse=ListReverse(头)
utility . print list(reverse . getreverse list())
运行结果:
这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。