首页 > 编程语言 >Javascript中的链表

Javascript中的链表

时间:2022-08-31 08:58:54浏览次数:80  
标签:head Javascript 元素 next 链表 当前 节点

Javascript中的链表

数据结构的介绍文章。链表概念与应用于 Javascript 语言的实际示例。

介绍

数据结构是一种有效处理大量数据的手段,了解它的结构和组成为我们提供了更有效的工具来设计与某些问题相关的产品。这次我们将进行链表介绍,回顾它的特点和用途。

链表的概念

链表是由相互自引用的元素组成的线性数据结构,即对于链表的每个元素,它们将具有指向下一个元素的所指对象或指针。请注意,这些元素存储在内存中的非连续位置。

链表由以下元素组成:

  1. 链表 : 元素管理结构。
  2. 节点 :存储和连接元素,包含至少一个任何类型的感兴趣数据和指向下一个节点的指针。
  3. :列表的初始节点。

链表类型

链表有多种实现,它们的区别在于它们指向的引用,一些实现包含循环方式的引用,而另一些可能具有对后继节点或前驱节点的引用。

这里有一些类型的链表:

简单链表

链表,其中每个节点都包含一个唯一的链接后继元素字段。

双向链表

链表,其中每个节点都包含一个双向链接,节点指向后继元素作为前驱。

循环链表

类似于简单链表,区别在于最后一个节点指向链表中的第一个节点。

在Javascript中实现到链表

要在 Javascript 中实现链表,我们将依赖存储库 https://github.com/trekhleb/javascript-algorithms 包含出色的实施;但是我们会简化一些方法和结构以便能够理解它的操作。我们将支持面向对象编程的每一个人。

类链表

表示一个链表的类,这个类将有 表示初始节点的属性。启动时,标题将设置为 无效的 . LinkedList 类在启动时不会有任何与之关联的节点。

 类链表{  
 构造函数(){  
 this.head = null;  
 }

类节点

代表一个节点的类,这个类会有两个属性,属性 价值 表示要存储的感兴趣的数据和 下一个 属性表示指向列表中下一项的指针。

 类节点{  
 构造函数(值,下一个){  
 this.value = 值;  
 this.next = 下一个;  
 }  
 }

接下来的步骤是将方法添加到 链表 类将帮助我们执行列表中节点的操作。例如,元素的插入、搜索和删除。

节点插入方法

我们将从将节点插入链表的基本方法开始。

插入节点()

 插入节点(值){  
 const newNode = new Node(value, null);  
 如果(this.head === null){  
 this.head = newNode;  
 } 别的 {  
 让当前 = this.head;  
 而(当前.下一个){  
 当前=当前.下一个;  
 }  
 current.next = 新节点;  
 }  
 }  
 }

在代码片段中:

  • 使用参数指示的值创建一个新节点。
  • 第一个节点存储在 财产。
  • 后续节点将绑定在 下一个 最后一个元素的属性,以此类推。

笔记 :我们可以将列表的最后一个元素与 下一个 财产,这将有 无效的 价值。

节点显示方式

我们将继续为每个节点打印值的基本方法。

打印()

 打印(){  
 让当前 = this.head;  
 而(当前){  
 控制台.log(current.value);  
 当前=当前.下一个;  
 }  
 }

在代码片段中:

  • 我们逐个元素遍历列表元素打印 价值 的财产。

节点搜索方法

我们将继续使用基于元素值搜索元素的基本方法。这一次,第一个匹配被返回。

查找节点()

 查找节点(值){  
 让当前 = this.head;  
 而(当前){  
 如果(当前值 === 值){  
 返回电流;  
 }  
 当前=当前.下一个;  
 }  
 返回空值;  
 }

在代码片段中:

  • 我们在 while 循环中使用相同的元素遍历技术,但添加了一个比较值的条件。
  • 如果该值等于要查找的值,则返回该元素。
  • 如果值不相等,它将继续循环遍历列表。
  • 如果没有找到元素, 无效的 被退回。

节点移除方法

我们将继续使用基于物品价值移除物品的基本方法。

删除节点()

 删除节点(值){  
 如果(this.head.value === 值){  
 this.head = this.head.next;  
 } 别的 {  
 让当前 = this.head;  
 而(当前.下一个){  
 if (current.next.value === value) {  
 current.next = current.next.next;  
 返回;  
 }  
 当前=当前.下一个;  
 }  
 }  
 }

在代码片段中:

  • 我们将列表的元素循环到具有值的节点。
  • 如果我们找到了节点,我们会做的就是省略链表的元素,也就是跳过与后面那个元素相连的那个元素,彻底消除当前的引用。

完整代码

结尾

在本文中,我们使用链表的基本方法,但是,这些方法应该足以涵盖链表的基本用例。当然,有很多方法可以扩展和改进我们的示例。我建议继续探索实现并根据您的需要调整它们。

感谢您来到这里,如果您觉得这很有用,请不要忘记鼓掌并分享。订阅以接收更多内容。

如果您需要其他帮助,请联系我。

非常感谢您的阅读,感谢您的宝贵时间。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/2910/39203108

标签:head,Javascript,元素,next,链表,当前,节点
From: https://www.cnblogs.com/amboke/p/16641691.html

相关文章

  • JavaScript 中的全局变量解释
    JavaScript中的全局变量解释****全局变量被定义在函数之外或在整个程序中使用的窗口对象旁边(除非被本地人遮蔽)。即使您声明一个变量而不使用var,它仍然会被解释为全局......
  • 函数,JavaScript 的核心。
    函数,JavaScript的核心。我听说函数被称为“心,”“灵魂,“和”国王”的JavaScript。他们试图强调JavaScript函数的重要性。让我们试着理解为什么函数对JavaSc......
  • 使用 JavaScript Map Method 组合 mongo 查询的算法
    使用JavaScriptMapMethod组合mongo查询的算法假设您有大量数据,并且您想查找选定品牌的特定产品,例如尼卡化妆品和一个特定的类别,例如润唇膏从中。你的代码看起来......
  • 基础知识——在 5 分钟内了解 Javascript 基础知识。
    基础知识——在5分钟内了解Javascript基础知识。对新开发人员的快速且有价值的Javascript审查。如果你和我一样,你喜欢编码,但在学习新事物几天后很难记住基本概念。......
  • 数据结构之链表的原理
    链表:在计算机中用一组任意的存储单元存储线性表的数据元素称为链式存储结构,这组存储结构可以是连续的,也可以是不连续的,因此在存储数据元素时可以动态分配内存。注:在java中......
  • 工具函数(JavaScript)——如何判断设备是不是移动端
    浏览器有一个Navigator接口,表示用户代理的状态和标识。Navigator.userAgent可以知道客户端的设备类型。请求的请求标头有一个user-agent字段,内容中包含了设备型号的信......
  • 从零构建链表
    最重要的头节点是这样创建的:        Node*Head=newNode;//头节点不存储数据        Head->next=NULL;        Node*pre=Head......
  • 关于 JavaScript 函数的思考
    函数可以将一堆重复的代码整合成一个整体,在需要改变的地方通过参数传值来改变。比如,根据类型查询数据,接口返回的数据一样,后续处理这个数据的逻辑也是一样的,只有类型和输入......
  • JavaScript 引擎,一个真实的故事(第 1 部分)
    JavaScript引擎,一个真实的故事(第1部分)一个任何使用过JavaScript的人都可能熟悉V8引擎。大多数人都知道JavaScript在单线程中运行并使用回调,这对于语言引擎背后......
  • Javascript解构赋值
    Javascript解构赋值解构赋值语法是一种Javascript表达式。通过解构赋值可以将属性/值从对象/数组中取出,赋值给其他变量引用链接语法vara,b,rest;[a,b]=[......