使用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 相关文章推荐
javascript 按回车键相应按钮提交事件
Nov 02 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
table行随鼠标移动变色示例
May 07 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
May 22 Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 Javascript
轻松搞定js表单验证
Oct 13 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
基于jQuery实现的打字机效果
Jan 16 Javascript
微信小程序云开发之新手环境配置
May 16 Javascript
js判断密码强度的方法
Mar 18 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
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
django连接oracle时setting 配置方法
2019/08/29 Python
没编程基础可以学python吗
2020/06/17 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
法学个人求职信范文
2014/01/27 职场文书
税务会计岗位职责
2014/02/18 职场文书
支教个人总结
2015/03/04 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书