问答题1159/1587删除链表的一个节点

难度:
2023-05-28 创建

参考答案:

可以通过以下步骤实现:

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

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

1function deleteNode(head, val) { 2 // 如果要删除的节点是头节点,则直接返回 head.next 3 if (head.val === val) { 4 return head.next; 5 } 6 7 let prev = head; 8 let curr = head.next; 9 10 while (curr !== null) { 11 if (curr.val === val) { 12 prev.next = curr.next; 13 curr = null; 14 break; 15 } else { 16 prev = curr; 17 curr = curr.next; 18 } 19 } 20 21 return head; 22}

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

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

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

最近更新时间:2023-07-08

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!