用于在链接列表中搜索元素的 JavaScript 程序

用于在链接列表中搜索元素的 javascript 程序

链表是一种线性数据结构,其中每个元素(也称为节点)包含一个数据值和对列表中下一个节点的引用。链表上的一种常见操作是搜索特定元素。这涉及遍历列表并将每个节点的数据值与目标元素进行比较,直到找到匹配项。

这是我们将在整篇文章中使用的链接列表的示例 –

10 -> 20 -> 30 -> 40 -> 空

在此链表中,每个节点都包含一个值,箭头指示序列中的下一个节点。该列表从包含值 10 的头节点开始,以包含值 40 并指向 null 的尾节点结束。我们将使用这个链表来演示如何使用 JavaScript 在链表中搜索元素。

立即学习“Java免费学习笔记(深入)”;

让我们看看下面的例子 –

Linked list: 10 -> 20 -> 30 -> 40 -> nullInput: 40Output: Element found at index 3Input: 10Output: Element found at index 0Input: nullOutput: Element not found

登录后复制

现在让我们讨论一下在 JavaScript 中创建链表的算法。

算法

第 1 步 – 定义一个具有两个属性的 Node 类:value 和 next。 value属性代表节点中存储的数据,next属性是对链表中下一个节点的引用。

第 2 步 – 定义一个具有三个属性的 LinkedList 类:head、tail 和 length。 head属性表示链表中的第一个节点,tail属性表示链表中的最后一个节点,length属性表示链表中的节点数。

第 3 步 – 定义一个名为 – add 的方法到以值作为参数的 LinkedList 类。 add 方法应该使用给定值创建一个新节点并将其添加到链表的末尾。

第 4 步 – 为 LinkedList 类定义一个名为“remove”的方法,该方法采用一个值作为参数。 remove 方法应该删除链表中具有给定值的第一个节点。

第 5 步 – 为 LinkedList 类定义一个名为 search 的方法,该方法将值作为参数。 search 方法应该返回给定值的链表中的第一个节点,如果没有找到节点则返回 null。

第6步 – 为LinkedList类定义一个名为reverse的方法,用于反转链表中节点的顺序。

示例:使用 JavaScript 实现上述算法

下面的程序定义了一个 Node 类和一个 LinkedList 类。 Node 类使用给定的数据值和对列表中下一个节点的引用创建一个新节点。 LinkedList 类创建一个新的链表,其头节点最初指向 null,并且 size 属性设置为 0。 add 方法将新节点添加到链表的末尾。 search方法遍历链表,如果找到则返回该元素的索引,如果没有找到则返回一条消息。最后,程序创建一个新的链表,向其中添加元素,并搜索特定元素。

// Define the Node class for a singly linked listclass Node {   constructor(data) {      this.data = data;      this.next = null;   }}// Define the LinkedList classclass LinkedList {   constructor() {      this.head = null;      this.size = 0;   }   // Add an element to the linked list   add(element) {      const node = new Node(element);      // If the linked list is empty, set the new node as the head      if (this.head === null) {         this.head = node;      } else {         // Traverse to the end of the linked list and add the new node         let current = this.head;         while (current.next !== null) {            current = current.next;         }         current.next = node;      }      this.size++;   }   // Search for an element in the linked list   search(element) {      let current = this.head;      let index = 0;      // Traverse through the linked list until the element is found      while (current !== null) {         if (current.data === element) {            return `Element found at index ${index}`;         }         current = current.next;         index++;      }      return "Element not found";   }}// Create a new linked listconst ll = new LinkedList();// Add elements to the linked listll.add(10);ll.add(20);ll.add(30);ll.add(40);ll.add(50);// Search for an element in the linked listconst result = ll.search(30);console.log(result); 

登录后复制

结论

使用 JavaScript 在链接列表中搜索元素的程序涉及创建一个“LinkedList”类,该类定义向列表添加元素以及在列表中搜索元素的方法。程序使用while循环遍历链表,并将每个节点中的数据元素与正在查找的元素进行比较。如果找到该元素,则程序返回该节点的索引,如果未找到该元素,则程序返回“Element not find”。

以上就是用于在链接列表中搜索元素的 JavaScript 程序的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2692166.html

(0)
上一篇 2025年3月7日 17:37:51
下一篇 2025年2月28日 11:55:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 有关 jQuery UI 1.7 的基本信息

    今天早上,jQuery UI 团队宣布该库的最新版本 1.7 现已可供下载。让我们来看看一些新功能和增强功能;它们相当可观!

    2025年3月7日
    200
  • 如何动态读取div的所有span?

    创建网页时,一个 HTML 元素可以包含多个嵌套的 HTML 元素。在某些情况下,开发人员可能需要读取一个 HTML 元素的特定 HTML 元素。在我们的例子中,我们需要读取 div 元素的所有 span 元素并提取它们的内容。 在本教程中…

    2025年3月7日
    200
  • 用于范围 LCM 查询的 JavaScript 程序

    LCM 代表最小公倍数,一组数字的 LCM 是可被给定集合中存在的所有数字整除的所有数字中的最小数字。我们将看到完整的代码以及给定问题的解释。在本文中,我们将为一系列 LCM 查询实现 JavaScript 程序。 问题简介 在这个问题中,…

    2025年3月7日
    200
  • 顶级免费 JavaScript Canvas 库

    canvas 元素是在 html5 中引入的,作为使用 javascript 绘制图形的地方。你可以用它来做很多事情。这包括编辑图像、绘制简单或复杂的形状以及动画。 在本文中,我们将介绍一些 JavaScript 中最好的免费画布库。这些可…

    2025年3月7日
    200
  • 如何在 JavaScript 中调用一个返回另一个函数的函数?

    我们将通过引用函数名称并在其后添加括号来调用函数。如果我们调用的函数返回另一个函数(在我们的例子中确实如此),我们需要分配它到一个变量或立即调用它。未来,我们需要确保我们了解返回函数的行为以及如何在我们的代码中使用它。这就是所谓的函数柯里化…

    2025年3月7日
    200
  • 如何使用 FabricJS 向 IText 添加 linethrough?

    在本教程中,我们将学习如何使用 FabricJS 将 linethrough 添加到 IText 对象。 IText 类是在 FabricJS 版本 1.4 中引入的,它扩展了 Fabric.Text 并用于创建 IText 实例。 ITe…

    2025年3月7日
    200
  • JavaScript 程序求方阵中的最大值和最小值

    要找到最大或最小元素,我们必须关注要进行的比较次数以及选择哪种方法进行比较最有效:使用 if-else 语句比较元素的方法还是使用 if-else 语句比较元素的方法作为内置的。我们将看到完整的代码实现和解释。在本文中,我们将实现一个 Ja…

    2025年3月7日
    200
  • JavaScript 程序检查是否可以通过旋转数组来增加或减少数组

    数组的旋转是指将数组假设为圆形数组,每次旋转时将数组的元素向左或向右旋转一个索引,一端的元素可以采用另一端的值。递增数组意味着每个元素将大于或等于其前一个元素,递减数组意味着每个元素将小于或等于前一个元素。 在这个问题中,我们给定一个数组,…

    2025年3月7日
    200
  • 利用HTML5 Page Visibility API实现页面可见性控制

    早些时候,我们的浏览器不具有选项卡式浏览功能,但今天,当您查看所有可用的浏览器时,我们可以看到所有浏览器都提供该功能。作为一名程序员,我通常一次打开 10-15 个选项卡,有时这个数字会超过 25-30 个。 为什么使用此 API? 之前,…

    2025年3月7日
    200
  • 重新构建一个数组

    数组是一个有序的值列表,通常是为了循环遍历数字索引值而创建的,从索引零开始。您需要知道的是,数组是按数字顺序排列的集合,而不是具有与非数字顺序的值关联的属性名称的对象。本质上,数组使用数字作为查找键,而对象则具有用户定义的属性名称。 Jav…

    2025年3月7日
    200

发表回复

登录后才能评论