我们需要创建一个函数insert(data,position),将数据插入到链表中的给定位置。我们将执行以下步骤-
创建一个新节点
检查列表是否为空。如果是,则将节点添加到头并返回。
如果不是,那么我们将使用currElem迭代到要插入的位置。我们通过使currElem等于currElem.next来迭代链接列表。
然后,使节点指向列表中的下一个节点。这是为了跟踪列表的其余部分。
最后,我们断开从currElem到列表其余部分的链接,并使其指向我们创建的节点。现在,该节点在列表中的给定位置。
这是相同的插图-
现在让我们看一下我们将如何实现它-
insert(data, position = this.length) { let node = new this.Node(data); if (this.head === null) { this.head = node; this.length++; return this.head; } let iter = 1; let currNode = this.head; while (currNode.next != null && iter < position) { currNode = currNode.next; iter++; } node.next = currNode.next; currNode.next = node; this.length++; 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。