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

怎么在Python中实现一个单链表

发布时间:2023-05-14 03:31:53

单链表是一种常见的数据结构,它由节点组成,每个节点指向下一个节点。节点包含了一个数据元素和一个指向下一个节点的指针。单链表的优势在于插入和删除操作的时间复杂度是O(1),但访问元素的时间复杂度是O(n)。

在Python中实现单链表需要定义节点类和链表类。节点类需要包含一个数据元素和一个指向下一个节点的指针。链表类需要包含一个头指针和一些操作方法,如插入、删除和遍历元素。

使用Python实现单链表的步骤如下:

1. 定义节点类

节点类包含两个属性:数据元素和指向下一个节点的指针。

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

2. 定义链表类

链表类包含一个头指针和一些操作方法,如插入、删除和遍历元素。

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

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

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

    def insert_at_end(self, data):
        new_node = Node(data)
        if self.head is None:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next is not None:
            last_node = last_node.next
        last_node.next = new_node

    def delete(self, data):
        if self.head is None:
            return
        if self.head.data == data:
            self.head = self.head.next
            return
        current_node = self.head
        while current_node.next is not None:
            if current_node.next.data == data:
                current_node.next = current_node.next.next
                return
            current_node = current_node.next

    def display(self):
        current_node = self.head
        while current_node is not None:
            print(current_node.data, end = " ")
            current_node = current_node.next

3. 测试链表类

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

# 插入元素
linked_list.insert_at_beginning(1)
linked_list.insert_at_end(2)
linked_list.insert_at_end(3)
linked_list.insert_at_end(4)

# 显示链表元素
linked_list.display() # Output: 1 2 3 4

# 删除元素
linked_list.delete(3)

# 显示链表元素
linked_list.display() # Output: 1 2 4

这是一个简单的单链表实现,在实际使用中可以根据需要进行修改和优化。例如,可以在节点类中添加一个方法来更新节点的数据元素,或者在链表类中添加一个方法来获取链表长度。