发布于 2026-01-06 2 阅读
0

JavaScript 链表:理解​​和实现 JavaScript 中的 ES6 链表 - 实现 Node 类 如何连接节点? 在链表头插入 在链表尾插入 在随机位置插入 完整代码 AWS AI LIVE!

JavaScript 链表:理解​​和实现 ES6 中的链表 - 实现

节点类

我们如何连接这些节点?

插入头部

尾部插入

随机插入位置

完整代码

AWS AI 直播!

本文是上一篇文章的续篇,上一篇文章中我们详细阐述了所有相关概念、优缺点、大O时间复杂度、实际应用案例、链表的主要操作以及所有相关理论。如果您尚未阅读上一篇文章,我建议您先阅读它。

这是一个数据结构系列文章,使用 ES6 规范在 JavaScript 中实现。

本文旨在逐步讲解链表的实现过程。实际上,这两篇文章本身就构成了一个链表,因为前一篇文章指向了后一篇文章。

节点类

在接下来的代码中,我们将定义 Node 类及其构造函数。请记住,节点是存储数据和指向下一个节点的指针的基本构建块。 

这个类需要处理节点的创建。每次实例化该类时,构造函数都负责初始化两个属性:data 和 next。

备选

现在的挑战是创建接下来的四个节点,只是创建节点,而不是如何连接它们。

备选

基本上,我们需要实例化四次 Node 类才能创建四个节点。 目前,我们暂时不用考虑第二个参数。为什么呢?因为此时我们只是在学习如何创建节点,暂时不用考虑它们之间的连接方式。
备选

我们如何连接这些节点?

在之前的代码中,我们只是独立地创建了节点,现在是时候学习如何将它们连接起来形成链表了。

备选
现在我们已经定义了 Node 类,接下来需要定义一个新类,该类将负责处理下一个指针属性以及链表的主要操作。让我们创建 LinkedList 类。
备选

在上面的代码中,我们定义了一个名为 LinkedList 的类及其构造函数。该构造函数负责初始化 head 属性以存储第一个节点,并设置 size 属性以跟踪链表的大小。

接下来,我们将提供在列表的开头、结尾或任何随机位置插入元素的功能。

插入头部

备选

我们刚刚创建了一个简单的方法,用于向链表的头部添加节点。我们将数据参数传递给该方法,并为 ` this.head`属性设置一个值,从而创建一个新的 `Node` 类实例。
让我们对目前的实现进行一些测试,看看结果如何。
备选

接下来是输出结果。
备选

尾部插入

我们刚刚学习了如何在头部添加节点。现在,是时候学习如何在尾部添加节点了。
备选

在这个aboveinsertToTail函数中,我们传递了数据参数,然后创建了一个新的 Node 类实例。之后,我们检查链表头节点是否为空。如果为空,则将头节点设置为刚刚创建的新节点;否则,将尾节点设置为头节点,然后遍历链表找到尾节点并更新尾节点的 next 指针。

随机插入位置

最后,我们将学习如何在链表的任意位置插入一个新节点。为此,我们需要遍历链表,直到找到目标位置。
备选

现在我们将使用以下测试来测试这个函数。

备选

输出结果如下所示。如您所见,在给定的索引处,节点(600)被添加到列表的第二个索引位置。

备选

完整代码

要点链接

希望你对数据结构,特别是链表,有了更深入的了解。今天就到这里。 

感谢阅读!如果您觉得这篇文章有趣,请点赞并分享给您的朋友,我将不胜感激。我希望这篇文章能为您带来一些新的知识。欢迎您在我的博客Medium
上关注我。

文章来源:https://dev.to/blarzhernandez/understanding-and-implementing-linked-lists-in-javascript-with-es6-implementation-4nif