📜  数据结构示例-创建并显示循环链表(1)

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

数据结构示例-创建并显示循环链表

本文介绍如何使用Python语言创建并显示循环链表。

什么是循环链表?

循环链表是一种特殊的链表结构,它的最后一个结点指向头结点,形成一个环。循环链表可以像链表一样进行插入、删除、查找等操作,而且可以很方便地实现循环访问。

创建循环链表的步骤

创建循环链表的步骤如下:

  1. 创建节点类,节点类需要包含两个部分:数据和指针。
  2. 创建链表类,链表类需要包含两个部分:头节点和尾节点。头节点指向第一个节点,尾节点指向最后一个节点。
  3. 在链表类中实现方法:插入节点、删除节点、查找节点、显示链表等。
代码实现

下面的代码是一个简单的循环链表实现。

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

class CircularLinkedList:
    def __init__(self):
        self.head = None
        self.tail = None

    # 插入节点
    def insert(self, data):
        node = Node(data)
        if self.head is None:
            self.head = node
        else:
            self.tail.next = node
        self.tail = node
        self.tail.next = self.head

    # 删除节点
    def delete(self, item):
        prev = None
        curr = self.head
        while curr:
            if curr.data == item:
                if prev is None:
                    self.head = curr.next
                    self.tail.next = self.head
                else:
                    prev.next = curr.next
                return
            prev = curr
            curr = curr.next

    # 查找节点
    def search(self, item):
        curr = self.head
        while curr:
            if curr.data == item:
                return curr
            curr = curr.next
        return None

    # 显示链表
    def display(self):
        curr = self.head
        while curr:
            print(curr.data, end=" ")
            curr = curr.next
            if curr == self.head:
                break

# 示例程序
if __name__ == '__main__':
    lst = CircularLinkedList()
    lst.insert(1)
    lst.insert(2)
    lst.insert(3)
    lst.insert(4)

    lst.display() # 输出 1 2 3 4
    lst.delete(2)
    lst.display() # 输出 1 3 4
结语

循环链表是一种非常有用的数据结构。通过上面的例子,我们可以看到循环链表的基本操作是非常简单的,但是它的应用是非常广泛的。在实际开发中,我们可以使用循环链表来解决很多问题,比如约瑟夫问题等。