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


Posted in Javascript onAugust 02, 2017

链表(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 3
console.log(list.findPre('1')); 
// Node { element: '0', next: Node { element: '1', next: Node { element: '2', next: [Object] } } }

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

总结

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

Javascript 相关文章推荐
ajax请求get与post的区别总结
Nov 04 Javascript
js螺旋动画效果的具体实例
Nov 15 Javascript
JavaScript通过字符串调用函数的实现方法
Mar 18 Javascript
javascript正则表达式中的replace方法详解
Apr 20 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
JavaScript实现select添加option
Jul 03 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
微信小程序实现带刻度尺滑块功能
Mar 29 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
Vue实现浏览器打印功能的代码
Apr 17 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 #Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
Aug 02 #Javascript
jQuery接受后台传递的List的实例详解
Aug 02 #jQuery
angular $watch 一个变量的变化(实例讲解)
Aug 02 #Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 #Javascript
js实现前端图片上传即时预览功能
Aug 02 #Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 #Javascript
You might like
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
深入浅析python 中的匿名函数
2018/05/21 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Python API自动化框架总结
2019/11/12 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python异常处理try except过程解析
2020/02/03 Python
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
养殖项目策划书范文
2014/01/13 职场文书
求职简历自我评价范例
2014/03/12 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
《秋思》教学反思
2016/02/23 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL