使用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 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
jquery分页对象使用示例
Apr 01 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
DOM基础教程之使用DOM控制表单
Jan 20 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
Vue.js双向绑定实现原理详解
Dec 22 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
基于node.js实现爬虫的讲解
Feb 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
php记录日志的实现代码
2011/08/08 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
PHP合并静态文件详解
2014/11/14 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
python matlibplot绘制多条曲线图
2021/02/19 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
JNI的定义
2012/11/25 面试题
简历中个人自我评价范文
2013/12/26 职场文书
标准自荐信范文
2014/01/29 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书