📅  最后修改于: 2023-12-03 15:06:59.093000             🧑  作者: Mango
循环列表是一种特殊的链表,其中最后一个元素的下一个节点是第一个元素,形成一个循环。创建循环列表通常需要遍历整个链表,找到最后一个元素,并将最后一个节点的下一个节点指向第一个节点。而使用递归可以更加简洁地实现这个过程。
实现以上步骤的递归函数如下:
class Node:
def __init__(self, val):
self.val = val
self.next = None
def create_circular_list(head, k, count=1):
if count == k:
head.next = root
return root
else:
root = Node(count)
root.next = create_circular_list(head, k, count+1)
return root
上述函数接受一个头节点head和给定的值k作为参数,创建k个具有连续值的节点,并将链表的最后一个元素的下一个节点指向第一个节点,形成循环。
创建一个具有5个元素的循环链表,并输出节点值。
root = Node(1) # 创建头节点
create_circular_list(root, 5) # 创建循环列表
curr_node = root
for i in range(5):
print(curr_node.val)
curr_node = curr_node.next
输出结果如下:
1
2
3
4
5
使用递归创建循环列表可以更加直观地理解链表链接过程,并且代码实现也更加简洁。但需要注意递归的终止条件和节点链接的顺序,以确保循环链表的正确创建。