Python中链表的循环(Circular)实现方法

2023-04-11 00:00:00 方法 循环 链表

链表的循环实现方法相对于普通链表,主要是在操作尾节点时需要特别注意。以下是链表的循环实现方法示例,以字符串作为节点内容:

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
皮蛋编程

可以看到,我们成功地创建了一个循环链表,并在循环遍历时输出了所有节点的内容。

相关文章