Skip to content

删除链表的一个节点

Posted on:2023年7月8日 at 15:59

可以通过以下步骤实现:

  1. 遍历链表,找到待删除节点的前一个节点。
  2. 将待删除节点的前一个节点的 next 指针指向待删除节点的下一个节点。
  3. 将待删除节点置为 null。

下面是示例代码,假设链表的每个节点都有 val 和 next 两个属性:

function deleteNode(head, val) {
  // 如果要删除的节点是头节点,则直接返回 head.next
  if (head.val === val) {
    return head.next;
  }

  let prev = head;
  let curr = head.next;

  while (curr !== null) {
    if (curr.val === val) {
      prev.next = curr.next;
      curr = null;
      break;
    } else {
      prev = curr;
      curr = curr.next;
    }
  }

  return head;
}

首先检查待删除节点是否为头节点。如果是,则直接返回头节点的下一个节点;否则,我们遍历链表并找到待删除节点的前一个节点和当前节点。

当找到该节点时,我们将前一个节点的 next 指针指向待删除节点的下一个节点,并将待删除节点置为 null,以便 JavaScript 的垃圾回收机制能够回收内存,避免内存泄漏。

最后,我们返回头节点作为函数的结果。

原文转自:https://fe.ecool.fun/topic/5c91b3fc-775e-4782-a262-7684487d5196