链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。链表可以分为单向链表、双向链表和循环链表。循环链表是其中一种特殊类型,其尾节点的指针指向头节点,形成一个环状结构。
以下是一个简单的单向循环链表的实现:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
new_node.next = self.head
else:
temp = self.head
while temp.next != self.head:
temp = temp.next
temp.next = new_node
new_node.next = self.head
def display(self):
elements = []
temp = self.head
while True:
elements.append(temp.data)
temp = temp.next
if temp == self.head:
break
return elements
# 示例使用
cll = CircularLinkedList()
cll.append(1)
cll.append(2)
cll.append(3)
print(cll.display()) # 输出: [1, 2, 3]
while temp.next != self.head:
temp = temp.next
if not self.head:
print("链表为空")
return
temp = self.head
prev = None
while temp.next != self.head:
prev = temp
temp = temp.next
if prev:
prev.next = self.head.next
else:
self.head = self.head.next
del temp
通过以上方法,可以有效地理解和处理循环链表中的各种问题。
领取专属 10元无门槛券
手把手带您无忧上云