当前位置:首页 > 日记 > 正文

使用JavaScript实现链表的数据结构的代码

使用JavaScript实现链表的数据结构的代码

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)   — 维基百科

上面是维基百科对 链表 的解读。下面我们用 JavaScript 代码对链表的数据结构进行实现

实现Node类表示节点

/** * Node 类用来表示节点 * element 用来保存节点上的数据 * next 用来保存指向下一个节点的链接 */function Node(element) { this.element = element; this.next = null;}LList类提供对链表操作的方法/** * LList 类提供了对链表进行操作的方法 * 链表只有一个属性, * 使用一个 Node 对象来保存该链表的头节点。 */class LList { constructor() {  this.head = new Node('head'); } // 查找节点 find(item) {  let currNode = this.head;  while(currNode.element !== item) {   currNode = currNode.next;  }  return currNode; } // 查找前一个节点 findPre(item) {  if(item === 'head') throw new Error('now is head!');  let currNode = this.head;  while (currNode.next && currNode.next.element !== item) {   currNode = currNode.next;  }  return currNode; } // 插入新节点 insert(newElement, item) {  let newNode = new Node(newElement);  let currNode = this.find(item);  newNode.next = currNode.next;  currNode.next = newNode; } // 删除一个节点 remove(item) {  let preNode = this.findPre(item);  if(preNode.next !== null) {   preNode.next = preNode.next.next;  } } // 显示链表中的元素 display() {  let currNode = this.head;  while(currNode.next !== null) {   console.log(currNode.next.element);   currNode = currNode.next;  } }}

测试代码

const list = new LList(); // LList { head: Node { element: 'head', next: null } }list.insert('0', 'head');list.insert('1', '0');list.insert('2', '1');list.insert('3', '2');list.remove('1');console.log(list); // LList { head: Node { element: 'head', next: Node { element: '0', next: [Object] } } }console.log(list.display()); // 0 2 3console.log(list.findPre('1')); // Node { element: '0', next: Node { element: '1', next: Node { element: '2', next: [Object] } } }

上面就是用JavaScript对简单链表的数据结构的简单实现:smile:

总结

以上所述是小编给大家介绍的使用JavaScript实现链表的数据结构的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

老生常谈计算机中的编码问题 | 必

老生常谈计算机中的编码问题 | 必

编码问题,计算,老生常谈,必看,机中,计算机中的编码问题因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制1111111…

通过V8源码看一个关于JS数组排序的

通过V8源码看一个关于JS数组排序的

数组排序,诡异,源码,电脑软件,JS,前言前几天一个朋友在微信里面问我一个关于 JS 数组排序的问题。通过该问题发现了一些之前没发现的内容,下面话不多少了,来一起看看详细的介绍吧。原始数组如下:var data = [ {value: 4}, {value: 2}, {valu…

Photoshop 7.0新增了哪些功能?

Photoshop 7.0新增了哪些功能?

功能,新增了,电脑软件,Photoshop,Photoshop 7.0 上市好久了 ,当时它也是现在的CC 版本一样 独一无二的, 想知道当年PS“进化”的过程的同学跟我来吧!介绍你们当时新增的功能。软件名称:Adobe PhotoShop7.0 简体中文版软件大小:154MB更…

Excel中表格工作表保护密码撤销的

Excel中表格工作表保护密码撤销的

密码,操作方法,表格,工作,操作步骤,  在做excel表格时我们有时候会给自己的工作表加密,一旦忘记密码就会很麻烦,如何绕过密码,直接撤销保护。今天,小编就教大家在Excel中表格工作表保护密码撤销的操作方法。Excel中表格工作表保护密码撤销的…

jquery实现回车键触发事件 | 实例

jquery实现回车键触发事件 | 实例

回车键,事件,实例,电脑软件,jquery,键盘事件有3:keydown,keypress,keyup,分别是按下,按着没上抬,上抬键盘 。正确代码为:$(document).keyup(function(event){ if(event.keyCode ==13){ $("#submit").trigger("click"); }});推荐:keyup,防止笔记…

浅谈JavaScript find 方法不支持IE

浅谈JavaScript find 方法不支持IE

方法,不支持,浅谈,电脑软件,find,最近在前端开发中,遇到一个JavaScript 的问题。<script type="text/javascript"> var arrayList = new Array(); arrayList.push(1); arrayList.push(2); arrayList.push(3); arrayList.push(4); a…

怎样利用成熟的字体排版规则创造令

怎样利用成熟的字体排版规则创造令

字体,网页,创造,惊艳,成熟,漂亮的字体排版总能为网站设计加分不少。别具一格的设计虽然精彩,但是更多的时候,沿着前人探索出来的设计规则来设计,会更加得心应手。怎样利用成熟的规则来创造令人惊艳的网页呢?今天的文章就沿着这样的思路来探索网…

详解JavaScript按概率随机生成事件

详解JavaScript按概率随机生成事件

事件,概率,详解,电脑软件,JavaScript,最近做了一个JavaScript按概率随机生成事件,于是整理了一下思路,写了一个小demo:/**在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品**/function random(arr1, arr2…

详解——不让Tomcat重启

详解——不让Tomcat重启

重启,详解,电脑软件,Tomcat,要做到这样功能需要对本机有所配置一下:安装步骤:1、 在 windows 启动安装程序,在控制台输入 :java -jar dcevm-0.2-win.jar (路径放到dcevm-0.2-win.jar的文件夹)下面附件下载等一会儿,这时会出现一个程序框。选择一…

win10回收站自动清空

win10回收站自动清空

回收站,清空,电脑软件,回收站基本上是历代Windows桌面的必备摆设,它的作用就是防止用户误删除文件后没地儿哭去,属于&ldquo;后悔药&rdquo;&hellip;&hellip;不过对于某些&ldquo;系统洁癖&rdquo;用户来说,看回收站图标被一堆&ldquo;废纸&rdquo;…

jQuery is not defined 错误原因与

jQuery is not defined 错误原因与

解决方法,错误,原因,电脑软件,jQuery,通常出现这种状况有几种解决方法:1:查看是否引入jquery文件就算引入了文件了是不是通过一些整站下载器之类的软件下载的,都会出现问题,建议用迅雷到官方下载即可。2:查询路径是否错误,可以在页面源码中点…

Ai怎么制作一种文字镶嵌的效果?

Ai怎么制作一种文字镶嵌的效果?

文字,效果,电脑软件,Ai,平时使用AI软件来设计,若是直接写文字,有时候看起来就会显得很单调、乏味,若是能来点创意的设计,肯定能让人充满新鲜感,眼前一亮,比如把一张自己喜欢的,漂亮的图片填充嵌入到文字里面,又会是怎么样的感觉呢?让文字拥有了图片…