📜  循环链表 |设置 2(遍历)(1)

📅  最后修改于: 2023-12-03 15:25:37.686000             🧑  作者: Mango

循环链表 | 设置 2(遍历)

循环链表是一种特殊的链表数据结构,其中最后一个节点指向第一个节点,形成了一个循环。在循环链表中,我们可以遍历链表并访问每个节点的数据值。

遍历循环链表

遍历循环链表与遍历普通链表的方法类似。由于循环链表的最后一个节点指向第一个节点,因此我们可以从任意节点开始遍历循环链表。以下是遍历循环链表的示例代码:

class Node:
    def __init__(self, data = None):
        self.data = data
        self.next = None

class CircularLinkedList:
    def __init__(self):
        self.head = None
  
    def traverse(self):
        if not self.head:
            print("Circular Linked List is empty")
            return
        current_node = self.head
        while current_node.next != self.head:
            print(current_node.data, end = ' ')
            current_node = current_node.next
        print(current_node.data)

在上述代码中,我们定义了一个 traverse() 函数来遍历循环链表。该函数首先检查循环链表是否为空,如果为空,则打印消息并返回。否则,我们使用一个 current_node 变量来跟踪当前节点,并一直沿着链表移动,直到我们回到起始节点为止。我们在每个节点上打印其数据值,最终打印出整个循环链表。

示例

现在,让我们利用上述类来创建一个简单的循环链表,并使用 traverse() 函数遍历该链表。

# 创建一个循环链表
c_list = CircularLinkedList()
c_list.head = Node(1)
second_node = Node(2)
third_node = Node(3)
fourth_node = Node(4)
c_list.head.next = second_node
second_node.next = third_node
third_node.next = fourth_node
fourth_node.next = c_list.head

# 遍历循环链表
c_list.traverse()

输出如下:

1 2 3 4
结论

上述示例演示了遍历循环链表的方法。您可以通过从任意节点开始,沿着链表移动并访问每个节点的数据来实现此目的。