【发布时间】:2021-12-11 01:54:07
【问题描述】:
我正在解决这个 leetcode 问题:https://leetcode.com/problems/delete-node-in-a-linked-list/
编写一个函数来删除单链表中的一个节点。您将无法访问列表的头部,而是可以访问要直接删除的节点。
保证要删除的节点不是链表中的尾节点。
我找到了这个解决方案:
var deleteNode = function (node) {
node.val = node.next.val;
node.next = node.next.next;
};
这是我的链表实现:
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class LinkedList {
constructor(value) {
const newNode = new Node(value);
this.head = newNode;
this.tail = this.head;
this.length = 1;
}
}
我不知道为什么它不适用于我的 LL 实现。
【问题讨论】:
-
@RomainHippeau 你不能在没有头指针的情况下在单链表中执行此操作。
-
@RomainHippeau 他正在将值从下一个复制到当前,然后再删除下一个。
-
如果删除倒数第二个节点,它变成了尾部,但
LinkedList.tail仍然指向前一个尾部。 -
而且你也不要减少包含它的
LinkedList的长度。
标签: javascript data-structures linked-list implementation