循环链表是一种链表的变种,它的最后一个节点的指针指向第一个节点,形成了一个环状结构。循环链表的特点包括:可以高效地实现正向和反向遍历,但是插入和删除操作相对较为复杂。
循环链表的实现方式与单向链表类似,使用指针来表示节点之间的关系。在循环链表中,最后一个节点的指针指向第一个节点,这样就可以实现循环遍历。
使用循环链表的场景包括:需要频繁插入和删除元素的数据结构、需要排序的数据结构、需要实现栈和队列等。
以下是一个简单的循环链表实现的 Python 代码示例:
class Node:
def init(self, data):
self.data = data
self.next = None
class LinkedList:
def init(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def print_list(self):
cur_node = self.head
while cur_node:
print(cur_node.data, end=" -> ")
cur_node = cur_node.next
print("None")
示例
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.print_list()
CopyCopy
在这个示例中,我们定义了一个 Node 类表示链表中的节点,包含一个 data 属性表示节点数据,一个 next 属性表示下一个节点的指针。LinkedList 类表示循环链表,包含一个 head 属性表示链表的头节点。LinkedList 类还实现了 append 方法用于在链表尾部插入节点,以及 print_list 方法用于遍历链表并打印节点数据。