📜  数据结构-单链表(1)

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

单链表(LinkedList)

简介

单链表是一种常见的数据结构,是由一系列节点组成的链式存储结构。每个节点包含一个数据域和一个指针域,指向下一个节点。单链表的头节点没有前驱节点,尾节点没有后继节点。

特点
  1. 动态性:单链表的长度是可以动态变化的,可以根据需要增删节点。
  2. 灵活性:由于单链表的节点之间通过指针链接,因此可以进行快速的增删操作。
  3. 实现简单:与其他数据结构相比,单链表的实现相对比较简单。
常见操作
插入元素

在单链表中插入元素,可以在头节点或指定位置进行插入。假设我们定义节点如下:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

定义一个单链表,可以使用下面的代码:

class LinkedList:
    def __init__(self):
        self.head = None
  1. 在头节点插入元素

在头节点插入元素非常简单,可以通过以下代码完成:

new_node = ListNode(1)
new_node.next = self.head
self.head = new_node
  1. 在指定位置插入元素

在指定位置插入元素需要先找到指定节点,然后进行插入操作。如果我们要在第二个节点后插入元素,可以使用以下代码:

new_node = ListNode(2)
cur = self.head
for _ in range(1, 2):
    cur = cur.next
new_node.next = cur.next
cur.next = new_node
访问元素

访问单链表中的元素,可以通过以下代码实现:

cur = self.head
while cur:
    print(cur.val)
    cur = cur.next
删除元素

删除单链表中的元素,可以将待删除节点的前驱节点与后继节点相连。如果要删除指定节点,可以使用以下代码:

cur = self.head
pre = None
while cur:
    if cur.val == value:
        if not pre:  # 删除头节点
            self.head = cur.next
        else:
            pre.next = cur.next
        break
    pre, cur = cur, cur.next
应用场景

单链表在链表题目中广泛应用,比如链表翻转、链表排序等。在工程中,单链表可以作为基本的数据结构,用于实现其他数据结构,比如队列、栈等。