使用Javascript从双链表中删除元素

在链接列表中删除元素非常容易。我们只需要摆脱要删除的节点,即失去其引用。我们需要考虑3种情况-

  • 从head中删除一个元素:在这种情况下,我们可以简单地分配head = head.next并从下一个元素中删除前一个链接。这样,我们将丢失第一个元素的引用。并且头将开始指向第二个元素。

  • 从尾部删除元素:在这种情况下,我们可以简单地将倒数第二个节点的node.next分配为null,然后从列表中删除最后一个元素。我们还将尾部更新为指向当前节点。

  • 从两者之间删除元素:这比较棘手。在这种情况下,我们必须使该节点在要删除的节点之前,直接指向要删除的节点之后的节点。因此,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 <->

以上是 使用Javascript从双链表中删除元素 的全部内容, 来源链接: utcz.com/z/334660.html

回到顶部