欢迎访问宙启技术站
智能推送

Python实现链表数据结构及相关操作

发布时间:2023-12-04 08:05:45

链表数据结构是一种动态数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。在Python中,链表可以使用class实现,下面是一个链表类的示例:

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

class LinkedList:
    def __init__(self):
        self.head = None

    def is_empty(self):
        return self.head is None

    def prepend(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def append(self, data):
        new_node = Node(data)

        if self.is_empty():
            self.head = new_node
            return

        current = self.head
        while current.next:
            current = current.next
        current.next = new_node

    def delete(self, data):
        if self.is_empty():
            return

        if self.head.data == data:
            self.head = self.head.next
            return

        current = self.head
        while current.next:
            if current.next.data == data:
                current.next = current.next.next
                return
            current = current.next

    def search(self, data):
        current = self.head
        while current:
            if current.data == data:
                return True
            current = current.next
        return False

    def print_list(self):
        current = self.head
        while current:
            print(current.data, end=" ")
            current = current.next
        print()

使用示例:

# 创建一个空链表
my_list = LinkedList()

# 在链表前面插入元素
my_list.prepend(1)
my_list.prepend(2)

# 在链表末尾插入元素
my_list.append(3)
my_list.append(4)

# 打印链表:2 1 3 4
my_list.print_list()

# 删除链表中的元素
my_list.delete(3)

# 打印链表:2 1 4
my_list.print_list()

# 搜索链表中的元素
print(my_list.search(2))  # True
print(my_list.search(5))  # False

上述示例中,我们首先创建了一个空链表 my_list,然后使用 prepend 方法在链表的头部插入元素 2 和 1,使用 append 方法在链表的末尾插入元素 3 和 4。

接下来,我们使用 print_list 方法打印链表的内容,结果为 2 1 3 4

然后,我们使用 delete 方法删除链表中的元素 3,然后再次使用 print_list 方法打印链表的内容,结果为 2 1 4

最后,我们使用 search 方法搜索链表中的元素,分别输出 TrueFalse

通过上述示例,我们可以看到链表的基本操作包括:插入元素到链表的头部和尾部,删除链表中的元素,搜索链表中的元素,以及打印链表的内容。