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

使用Python实现链表数据结构

发布时间:2023-12-04 21:43:31

链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个存储元素的值和一个指向下一个节点的引用。链表可以用来表示不连续的数据存储结构,它的灵活性使得它适用于各种场景。

下面是用Python实现链表数据结构的示例代码:

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

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

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

    def append(self, value):
        new_node = Node(value)
        if self.is_empty():
            self.head = new_node
        else:
            current = self.head
            while current.next is not None:
                current = current.next
            current.next = new_node

    def insert(self, value, position):
        new_node = Node(value)
        if position <= 0:
            new_node.next = self.head
            self.head = new_node
        else:
            current = self.head
            index = 1
            while current.next is not None and index < position:
                current = current.next
                index += 1
            new_node.next = current.next
            current.next = new_node

    def delete(self, value):
        if self.is_empty():
            return
        if self.head.value == value:
            self.head = self.head.next
        else:
            previous = self.head
            current = previous.next
            while current is not None and current.value != value:
                previous = current
                current = current.next
            if current is not None:
                previous.next = current.next

    def search(self, value):
        current = self.head
        while current is not None and current.value != value:
            current = current.next
        return current is not None

    def size(self):
        current = self.head
        count = 0
        while current is not None:
            count += 1
            current = current.next
        return count

通过上面的代码,我们实现了一个链表类LinkedList,包含了常用的链表操作方法,例如插入、删除、搜索和计算链表长度。

下面是一个使用链表的例子:

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

# 判断链表是否为空
print(my_list.is_empty())  # 输出 True

# 向链表中添加元素
my_list.append(10)
my_list.append(20)
my_list.append(30)
my_list.append(40)

# 输出链表长度
print(my_list.size())  # 输出 4

# 在指定位置插入元素
my_list.insert(50, 2)

# 搜索指定元素
print(my_list.search(30))  # 输出 True

# 删除指定元素
my_list.delete(20)

# 输出链表的值
current = my_list.head
while current is not None:
    print(current.value)
    current = current.next

上面的代码创建了一个空链表my_list,然后通过append()方法向链表中添加了四个元素。接下来,我们输出链表的长度,并在指定位置插入一个新的元素。然后,我们搜索链表中的一个元素并删除另一个元素。最后,我们通过遍历链表的方式输出了链表中所有的元素。

链表是一个灵活且常用的数据结构,可以用于解决各种问题。在实际开发中,我们可以根据需要对链表进行扩展,添加更多的功能和操作方法,以满足具体的需求。