使用 Javascript 从双向链表移除元素
web developmentfront end technologyjavascript
在链表移除元素非常简单。我们只需要移除想要移除的节点,即丢失其引用。我们需要考虑 3 种情况 −
- 从头部移除元素:在这种情况下,我们可以简单地分配 head = head.next 并从下一个元素移除上一个链接。这样,我们将丢失第一个元素的引用。并且我们的头部将开始指向第二个元素。
- 从尾部移除元素:在这种情况下,我们可以简单地将倒数第二个节点的 node.next 分配为空,然后我们将从列表中移除最后一个元素。我们还将更新尾部以指向当前节点。
- 从中间移除元素:这更棘手。在这种情况下,我们必须使要删除的节点之前的节点直接指向要删除的节点之后的节点。因此,prevNode.next = node.next 和 node.next.prev = prevNode 将为我们完成此操作。
现在让我们看一下此 − 的说明
现在让我们看看如何实现此 −
示例
remove(data, position = 0) { if (this.length === 0) { console.log("List is already empty"); return; } this.length--; let currNode = this.head; if (position <= 0) { this.head = this.head.next; this.head.prev = null; } else if (position >= this.length - 1) { this.tail = this.tail.prev; this.tail.next = null; } else { let iter = 0; while (iter < position) { currNode = currNode.next; iter++; } currNode.next = currNode.next.next; currNode.next.prev = currNode; } return currNode; }
示例
您可以使用以下方法进行测试 −
let list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.remove(1); list.display(); list.insert(15, 2); list.remove(); list.display();
输出
这将给出输出 −
20 <-> 30 <-> 30 <-> 15 <->