数据结构与算法之链表 插入操作 头插法 / 尾插法 / 指定位置 实战

数据结构与算法阿木 发布于 2025-07-11 9 次阅读


链表插入操作实战:头插法、尾插法与指定位置插入

链表是一种常见的基础数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的操作相对简单,但灵活且高效。本文将围绕链表的插入操作,详细介绍头插法、尾插法和指定位置插入的实现方法。

在链表中插入节点是链表操作中最基本且最常用的操作之一。根据插入位置的不同,链表的插入操作可以分为头插法、尾插法和指定位置插入。下面将分别介绍这三种插入方法。

头插法

头插法是指在链表的头部插入一个新节点。这种方法简单直接,但需要注意保持链表的连续性。

实现代码

python

class ListNode:


def __init__(self, value=0, next=None):


self.value = value


self.next = next

def insert_at_head(head, value):


new_node = ListNode(value)


new_node.next = head


return new_node

示例


head = ListNode(1)


head.next = ListNode(2)


head.next.next = ListNode(3)

head = insert_at_head(head, 0)


分析

1. 创建一个新的节点,并设置其值为要插入的值。

2. 将新节点的`next`指针指向原链表的头部。

3. 将原链表的头部指针指向新节点。

尾插法

尾插法是指在链表的尾部插入一个新节点。这种方法需要遍历整个链表,找到最后一个节点,然后插入新节点。

实现代码

python

def insert_at_tail(head, value):


new_node = ListNode(value)


if not head:


return new_node


current = head


while current.next:


current = current.next


current.next = new_node


return head

示例


head = ListNode(1)


head.next = ListNode(2)


head.next.next = ListNode(3)

head = insert_at_tail(head, 4)


分析

1. 创建一个新的节点,并设置其值为要插入的值。

2. 如果链表为空,则新节点即为链表的头部。

3. 遍历链表,找到最后一个节点。

4. 将最后一个节点的`next`指针指向新节点。

指定位置插入

指定位置插入是指在链表的指定位置插入一个新节点。这种方法需要遍历到指定位置的前一个节点,然后插入新节点。

实现代码

python

def insert_at_position(head, value, position):


new_node = ListNode(value)


if position == 0:


new_node.next = head


return new_node


current = head


for _ in range(position - 1):


if not current:


raise IndexError("Position out of bounds")


current = current.next


new_node.next = current.next


current.next = new_node


return head

示例


head = ListNode(1)


head.next = ListNode(2)


head.next.next = ListNode(3)

head = insert_at_position(head, 4, 2)


分析

1. 创建一个新的节点,并设置其值为要插入的值。

2. 如果指定位置为0,则新节点即为链表的头部。

3. 遍历链表,找到指定位置的前一个节点。

4. 将新节点的`next`指针指向指定位置的后一个节点。

5. 将指定位置的前一个节点的`next`指针指向新节点。

总结

本文介绍了链表插入操作的几种方法:头插法、尾插法和指定位置插入。这些方法在实现时需要注意链表的连续性和边界条件。在实际应用中,可以根据具体需求选择合适的插入方法。

通过本文的学习,读者应该能够熟练掌握链表插入操作,为后续的链表操作打下坚实的基础。在实际编程中,链表插入操作是基础且重要的技能,希望本文能对读者有所帮助。