可以通过以下步骤实现:
- 遍历链表,找到待删除节点的前一个节点。
- 将待删除节点的前一个节点的 next 指针指向待删除节点的下一个节点。
- 将待删除节点置为 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 的垃圾回收机制能够回收内存,避免内存泄漏。
最后,我们返回头节点作为函数的结果。