125 次浏览
无论何时你想在一个容器中存储唯一元素,而顺序无关紧要,并且你主要想用它来检查不同对象的成员资格。集合在你想执行并集、交集、差集等数学集合中的运算时也很有用。让我们看看如何定义我们自己的集合以及如何在 ES6 中使用现有的集合。我们将实现的方法ES6 集合 API 提供了一些方法。我们将在我们的实现中实现这些方法,并了解如何使用内置类来使用它们。add() − 向… 阅读更多
424 次浏览
集合是一种抽象数据类型,可以存储某些值,没有任何特定顺序,也没有重复值。它是数学概念有限集的计算机实现。与大多数其他集合类型不同,通常不是从集合中检索特定元素,而是测试集合中是否存在某个值。
164 次浏览
在双向链表中,最后一个节点的 next 指针指向第一个节点,第一个节点的 previous 指针指向最后一个节点,从而构成双向循环链表。循环链表中的插入和删除操作与其他链表相同。你只需要在对链表的两端进行操作时跟踪最后一个链接即可。你可以查找并尝试使用循环链表算法作为指南来实现循环链表。
212 次浏览
在单向链表中,最后一个节点的 next 指针指向第一个节点。
452 次浏览
循环链表是链表的一种变体,其中第一个元素指向最后一个元素,最后一个元素指向第一个元素。单向链表和双向链表都可以转换为循环链表。
427 次浏览
以下是双向链表类的完整实现 - 示例class DoublyLinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } insert(data, position = this.length) { let node = new this.Node(data); // 列表当前为空 if (this.head === null) { this.head = node; this.tail = node; this.length++; return this.head; } // 插入在… 阅读更多
481 次浏览
在链表中删除元素非常容易。我们只需要去掉我们想要删除的节点,即失去它的引用。我们需要考虑三种情况 -从头部删除元素:在这种情况下,我们可以简单地赋值 head = head.next 并从下一个元素中删除之前的链接。这样,我们将丢失第一个元素的引用。我们的头部将开始指向第二个元素。从尾部删除元素:在这种情况下,我们可以简单地将倒数第二个节点的 node.next 赋值为 null … 阅读更多
448 次浏览
我们需要创建一个函数 insert(data, position) ,它将数据插入链表中的给定位置。我们将执行以下步骤 -创建一个新节点检查列表是否为空。如果是,则将节点添加到头部和尾部并返回。如果不是,我们将使用 currElem 迭代到我们想要插入它的位置。我们通过使 currElem 等于 currElem.next 来迭代链表。现在我们以以下方式更改链接 -使新节点指向列表中的下一个节点使下一个节点的 previous 指向新节点使我们的节点指向… 阅读更多
239 次浏览
让我们首先定义一个简单的类,它带有一个构造函数,该构造函数将 head 和 tail 初始化为 null。我们还将在 DoublyLinkedList 类的原型上定义另一个结构,该结构将表示链表中的每个节点。示例class LinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } } LinkedList.prototype.Node = class { constructor(data) { this.data = data; this.next = null; this.prev = null; } };让我们也创建一个 display 函数,它将帮助我们… 阅读更多
2K+ 次浏览
在本文中,我们将讨论 Javascript 中的双向链表类数据结构。这是一种线性数据结构。双向链表在所有操作中几乎与单向链表相同,我们只需要跟踪每个节点的一个额外链接。在单向链表中,我们只有 next 链接,在双向链表中,我们有两个链接,next 和 prev。双向链表表示为 - 请注意,在类本身中,我们还需要跟踪尾部(最后一个元素)。示例在这个例子中,我们理解… 阅读更多