接下来我将为大家详细讲解Python实现的单向循环链表的功能示例。
单向循环链表的基本概念
单向循环链表是指链表中每个节点都保存了下一个节点的地址信息,最后一个节点的地址信息指向第一个节点,形成了一个循环链表。在单向循环链表中,可以从任何一个节点开始遍历整个链表。
实现单向循环链表的关键操作
单向循环链表主要包括增加节点、删除节点、遍历节点、搜索节点等操作。以下是实现单向循环链表的关键操作步骤:
- 增加节点:需要创建一个节点类(如Node),并实例化节点对象(如insert_node),将新节点插入到链表中。
- 删除节点:找到要删除的节点,并将节点的前一个节点指向节点的下一个节点,从而删除该节点。
- 遍历节点:从链表的第一个节点开始,依次遍历链表中的每一个节点,直到遍历整个链表。
- 搜索节点:从链表的第一个节点开始,依次遍历链表中的每一个节点,如果找到了指定节点,则返回该节点;否则返回None。
示例说明一:显示链表中的所有节点
代码:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
new_node.next = self.head
else:
current = self.head
while current.next != self.head:
current = current.next
current.next = new_node
new_node.next = self.head
def display(self):
current = self.head
if self.head is None:
print("List is empty")
else:
while True:
print(current.data, end=" ")
current = current.next
if current == self.head:
break
# 创建一个单向循环链表
cll = CircularLinkedList()
# 在链表中增加节点
cll.add_node(1)
cll.add_node(2)
cll.add_node(3)
cll.add_node(4)
cll.add_node(5)
# 输出链表中的所有节点
cll.display()
解释:
上述代码实现了单向循环链表的基本操作,包括增加节点和显示链表中的所有节点。我们首先创建一个空链表,然后使用add_node方法添加节点,最后使用display方法输出链表中的所有节点。运行上述代码,可以得到以下输出:
1 2 3 4 5
说明:
链表中的所有节点成功地被显示出来了。
示例说明二:删除链表中的指定节点
代码:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
new_node.next = self.head
else:
current = self.head
while current.next != self.head:
current = current.next
current.next = new_node
new_node.next = self.head
def remove_node(self, key):
current = self.head
if current is not None:
if current.data == key:
while current.next != self.head:
current = current.next
current.next = self.head.next
self.head = self.head.next
else:
prev = self.head
while prev.next != self.head:
current = prev.next
if current.data == key:
prev.next = current.next
current = None
return
prev = prev.next
if prev.next.data == key:
prev.next = self.head
def display(self):
current = self.head
if self.head is None:
print("List is empty")
else:
while True:
print(current.data, end=" ")
current = current.next
if current == self.head:
break
# 创建一个单向循环链表
cll = CircularLinkedList()
# 在链表中增加节点
cll.add_node(1)
cll.add_node(2)
cll.add_node(3)
cll.add_node(4)
cll.add_node(5)
# 删除链表中的指定节点
cll.remove_node(3)
# 输出链表中的所有节点
cll.display()
解释:
上述代码实现了单向循环链表的基本操作,包括增加节点和删除链表中的指定节点。我们首先创建一个链表,然后使用add_node方法添加节点,接着使用remove_node方法删除链表中的指定节点,最后使用display方法输出链表中的所有节点。运行上述代码,可以得到以下输出:
1 2 4 5
说明:
节点3已经被删除,链表中的其他节点顺利连接。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现的单向循环链表功能示例 - Python技术站