📜  链表 |设置 3(删除节点)(1)

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

链表 | 设置 3(删除节点)

链表是一种数据结构,其中每个节点都包含包含数据和指向下一个节点的指针,可以在其中进行数据的存储、删除、遍历等操作。本文将介绍如何在链表中删除节点。

实现过程

在链表中删除节点,需要明确两个概念:待删除节点和待删除节点的前驱节点。具体实现过程如下:

  1. 找到待删除节点的前驱节点,即从链表头开始遍历,直到找到节点的 next 指针指向待删除节点为止。

  2. 将前驱节点的 next 指针指向待删除节点的 next 指针所指向的节点,即跳过待删除节点。

  3. 释放待删除节点的内存空间。

代码实现
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def deleteNode(head: ListNode, val: int) -> ListNode:
    if head is None:
        return None

    if head.val == val:
        return head.next

    node = head
    while node.next is not None:
        if node.next.val == val:
            node.next = node.next.next
            return head
        node = node.next

    return head
测试样例
# 创建链表 1 -> 2 -> 3 -> 4 -> 5
n1 = ListNode(1)
n2 = ListNode(2)
n3 = ListNode(3)
n4 = ListNode(4)
n5 = ListNode(5)
n1.next = n2
n2.next = n3
n3.next = n4
n4.next = n5

# 测试删除节点 3,结果为 1 -> 2 -> 4 -> 5
deleteNode(n1, 3)

以上就是删除链表中节点的介绍,希望对你有所帮助。