Python中链表的循环(Circular)实现方法
链表的循环实现方法相对于普通链表,主要是在操作尾节点时需要特别注意。以下是链表的循环实现方法示例,以字符串作为节点内容:
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: curr_node = self.head while curr_node.next != self.head: curr_node = curr_node.next curr_node.next = new_node new_node.next = self.head def print_list(self): curr_node = self.head while True: print(curr_node.data) curr_node = curr_node.next if curr_node == self.head: break
在这个实现方法中,我们使用了一个布尔运算和 while 循环,在遍历链表时当 curr_node 等于头节点时跳出循环,来达到循环遍历的效果。在 append 方法中,我们在最后一个节点的 next 指向新添加的节点后需要将其 next 指向头节点,这样才能保证链表是循环的。
接下来是链表的应用示例:
cllist = CircularLinkedList() cllist.append("pida") cllist.append("ncode") cllist.append(".com") cllist.append("皮蛋编程") cllist.print_list()
输出结果:
pida ncode .com 皮蛋编程
可以看到,我们成功地创建了一个循环链表,并在循环遍历时输出了所有节点的内容。
相关文章