Python程序创建一个由n个节点组成的循环链表,并倒序显示它
简介
循环链表是线性表的一种,它的最后一个节点指向第一个节点,形成一个环。在Python中,我们可以使用类来实现循环链表。本文将介绍如何使用Python创建一个由n个节点组成的循环链表,并如何倒序显示它。
创建循环链表
首先,我们需要定义一个Node类来表示每一个节点。Node类需要包含两个属性:data表示节点的值,next表示指向下一个节点的指针。
class Node:
def __init__(self, data):
self.data = data
self.next = None
接下来,我们可以定义一个CircularLinkedList类来表示循环链表。这个类需要包含一个属性:head表示链表的头节点。
class CircularLinkedList:
def __init__(self):
self.head = None
接下来,我们可以定义一个方法来向链表中插入节点。插入节点可以分为两种情况:
- 当链表为空时,直接将新节点设置为头节点
- 当链表不为空时,将新节点插入到链表末尾,并将新节点的next指向头节点
def insert(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
self.head.next = self.head
else:
current_node = self.head
while current_node.next != self.head:
current_node = current_node.next
current_node.next = new_node
new_node.next = self.head
这样,我们就可以通过循环调用insert方法来创建一个由n个节点组成的循环链表。
n = 5 # 创建一个由5个节点组成的循环链表
linked_list = CircularLinkedList()
for i in range(n):
linked_list.insert(i + 1)
倒序显示链表
接下来,我们可以定义一个方法来倒序显示链表。为了倒序显示,我们需要先遍历链表,将每个节点的引用存储在一个数组中。然后,我们可以倒序遍历这个数组,依次输出每个节点的值。
def reverse(self):
current_node = self.head
values = []
while current_node.next != self.head:
values.append(current_node.data)
current_node = current_node.next
values.append(current_node.data)
for i in range(len(values)-1,-1,-1):
print(values[i])
这样,我们就可以通过调用reverse方法来倒序显示链表。
linked_list.reverse()
示例代码
class Node:
def __init__(self, data):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def insert(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
self.head.next = self.head
else:
current_node = self.head
while current_node.next != self.head:
current_node = current_node.next
current_node.next = new_node
new_node.next = self.head
def reverse(self):
current_node = self.head
values = []
while current_node.next != self.head:
values.append(current_node.data)
current_node = current_node.next
values.append(current_node.data)
for i in range(len(values)-1,-1,-1):
print(values[i])
n = 5 # 创建一个由5个节点组成的循环链表
linked_list = CircularLinkedList()
for i in range(n):
linked_list.insert(i + 1)
linked_list.reverse()
结论
通过本文的介绍,我们了解了如何使用Python创建一个由n个节点组成的循环链表,并如何倒序显示它。循环链表是一种非常有用的数据结构,在实际编程中也会经常用到。希望本文能帮助读者加深对循环链表的理解,对相关编程的实践有所启发。