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

Python实现链表数据结构

发布时间:2023-12-04 08:56:29

链表(Linked List)是一种常见的线性数据结构,它由节点(Node)构成,每个节点包含一个数据元素和一个指向下一个节点的指针。

Python中可以使用类来实现链表数据结构。下面是一个简单的链表实现:

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

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

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

    def insert(self, data, pos):
        if pos < 0 or pos > self.length():
            raise IndexError("Index out of range")
        new_node = Node(data)
        if pos == 0:
            new_node.next = self.head
            self.head = new_node
        else:
            current = self.head
            for _ in range(pos-1):
                current = current.next
            new_node.next = current.next
            current.next = new_node

    def remove(self, data):
        if self.head is None:
            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 length(self):
        count = 0
        current = self.head
        while current:
            count += 1
            current = current.next
        return count

    def display(self):
        result = []
        current = self.head
        while current:
            result.append(current.data)
            current = current.next
        return result

使用示例:

# 创建一个链表
linked_list = LinkedList()

# 在链表末尾追加数据
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)

# 在指定位置插入数据
linked_list.insert(0, 0)
linked_list.insert(4, 4)
linked_list.insert(2.5, 3)

# 删除指定数据的节点
linked_list.remove(2.5)

# 计算链表长度
length = linked_list.length()

# 打印链表的数据
data = linked_list.display()

print(data)  # [0, 1, 2, 3, 4]
print(length)  # 5

上述代码实现了一个基本的链表数据结构,并进行了一些常见操作,包括追加数据、插入数据、删除数据、计算链表长度和显示链表数据。

在使用时,可以根据实际需求修改其中的方法,以适应具体问题。链表数据结构可以用于实现其他高级数据结构,如队列、栈等,也可以用于解决一些算法问题。