Python单向循环链表原理与实现方法示例
1. 什么是单向循环链表
单向循环链表是指链表的最后一个节点指向链表的第一个节点,形成一个环。单向循环链表可以实现数据的循环使用和遍历以及其他链表的基本操作。
2. 单向循环链表的实现方法
单向循环链表的实现方法是:有一个head指针指向链表的第一个节点,而链表的最后一个节点的next指针指向head,形成一个环。当链表为空时,head指针为None。
在Python中,我们可以使用类来实现单向循环链表。具体实现过程如下:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def isEmpty(self):
return self.head == None
def append(self, data):
node = Node(data)
if self.head == None:
self.head = node
node.next = self.head
else:
curr = self.head
while curr.next != self.head:
curr = curr.next
curr.next = node
node.next = self.head
def prepend(self, data):
node = Node(data)
if self.head == None:
self.head = node
node.next = self.head
else:
curr = self.head
while curr.next != self.head:
curr = curr.next
node.next = self.head
self.head = node
curr.next = self.head
def remove(self, key):
if self.head.data == key:
curr = self.head
while curr.next != self.head:
curr = curr.next
curr.next = self.head.next
self.head = self.head.next
else:
curr = self.head
prev = None
while curr.next != self.head:
prev = curr
curr = curr.next
if curr.data == key:
prev.next = curr.next
curr = curr.next
def __len__(self):
if self.head == None:
return 0
else:
curr = self.head
count = 1
while curr.next != self.head:
count += 1
curr = curr.next
return count
def __str__(self):
result = "Head -> "
curr = self.head
while curr.next != self.head:
result += str(curr.data) + " -> "
curr = curr.next
result += str(curr.data) + " -> Head"
return result
上述代码中,CircularLinkedList类中定义了链表的基本操作,包括:添加节点、删除节点、求链表长度、打印链表等等。
3. 示例说明
3.1 长度为5的单向循环链表的创建
我们可以使用如下代码来创建一个长度为5的单向循环链表:
c_list = CircularLinkedList()
c_list.append(1)
c_list.append(2)
c_list.append(3)
c_list.append(4)
c_list.append(5)
print(c_list)
运行结果如下:
Head -> 1 -> 2 -> 3 -> 4 -> 5 -> Head
3.2 单向循环链表的删除操作
我们可以使用如下代码删除单向循环链表中值为3的节点:
c_list.remove(3)
print(c_list)
运行结果如下:
Head -> 1 -> 2 -> 4 -> 5 -> Head
以上就是使用Python实现单向循环链表的原理与实现方法示例的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python单向循环链表原理与实现方法示例 - Python技术站