使用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使用cookie
Feb 02 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
基于vue-resource jsonp跨域问题的解决方法
Feb 03 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Django实现学生管理系统
2019/02/26 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
Python设计密码强度校验程序
2020/07/30 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
工作推荐信模板
2015/03/25 职场文书
2015年质检工作总结
2015/05/04 职场文书
资金申请报告范文
2015/05/14 职场文书
奖励申请报告范文
2015/05/15 职场文书
详解python字符串驻留技术
2021/05/21 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP