使用Javascript将元素插入双向链表

我们需要创建一个函数insert(data,position),将数据插入到链表中的给定位置。我们将执行以下步骤-

  • 创建一个新节点

  • 检查列表是否为空。如果是,则将节点添加到头尾,然后返回。

  • 如果不是,那么我们将使用currElem迭代到要插入的位置。我们通过使currElem等于currElem.next来迭代链接列表。

 现在我们以以下方式更改链接-

  • 使新节点指向列表中的下一个节点

  • 使下一个节点的上一个点指向新节点

  • 使我们的节点指向上一个节点

  • 使上一个节点的下一个指向新节点

最后,我们断开从currElem到列表其余部分的链接,并使其指向我们创建的节点。现在,该节点在列表中的给定位置。

这是相同的插图-

现在让我们看一下我们将如何实现它-

示例

insert(data, position = this.length) {

   let node = new this.Node(data);

   this.length++;

   //列表当前为空

   if (this.head === null) {

      this.head = node;

      this.tail = node;

      return this.head;

   }

   //头插入

   if (position == 0) {

      node.prev = null;

      node.next = this.head;

      this.head.prev = node;

      this.head = node;

      return this.head;

   }

   let iter = 1;

   let currNode = this.head;

   while (currNode.next != null && iter < position) {

      currNode = currNode.next;

      iter++;

   }

   //使新节点指向列表中的下一个节点

   node.next = currNode.next;

   //使下一个节点的上一个点指向新节点

   if (currNode.next != null) {

      currNode.next.prev = node;

   }

   //使我们的节点指向上一个节点

   node.prev = currNode;

   //使上一个节点的下一个指向新节点

   currNode.next = node;

   //检查插入的元素是否在尾部,如果是,则使尾部指向它

   if (this.tail.next != null) {

      this.tail = this.tail.next;

    }

    return node;

}

请注意,我们已将位置指定为最后一个元素。这是因为如果您不提供职位,则默认情况下会将其插入结尾。

您可以使用以下方法进行测试: 

示例

let list = new LinkedList();

list.insert(10);

list.insert(20);

list.insert(30);

list.insert(15, 2);

list.display();

输出结果

这将给出输出-

10 <->

30 <->

15 <->

20 <->

如我们所见,所有元素都按照我们想要的顺序排列。我们尝试在2之后的位置插入15。

以上是 使用Javascript将元素插入双向链表 的全部内容, 来源链接: utcz.com/z/343228.html

回到顶部