JS基于对象的链表实现与使用方法示例


Posted in Javascript onJanuary 31, 2019

本文实例讲述了JS基于对象的链表实现与使用方法。分享给大家供大家参考,具体如下:

链表是一种在物理内存上不连续的数据结构。原理如下图所示:

JS基于对象的链表实现与使用方法示例

示例代码:

/*JS实现一个基于对象的链表*/
function Node(element){
  this.element = element;//节点存储的元素
  this.next = null;//节点指向的下一个节点,这里先设置为空
}
function LList(){
  this.head = new Node("head");//生成一个头节点
  this.find = find;//在链表中找到某个节点
  this.insert = insert;//在链表中某个元素后面插入某个节点元素
  this.display = display;//在将链表中的节点元素显示出来
  this.findPrevious = findPrevious;//找到某个节点的上一个节点
  this.remove = remove;//删除某个节点
}
function remove(item) {
  var prevNode = this.findPrevious(item);
  if (!(prevNode.next == null)) {
    prevNode.next = prevNode.next.next;
  }
}
function findPrevious(item) {
  var currNode = this.head;
  while (!(currNode.next == null) &&
    (currNode.next.element != item)) {
    currNode = currNode.next;
  }
  return currNode;
}
function display() {
  var currNode = this.head;
  var nodestr = "";
  while (!(currNode.next == null)) {
    nodestr +=" "+currNode.next.element;
    currNode = currNode.next;
  }
  console.log(nodestr);
}
function find(item) {
  var currNode = this.head;
  while (currNode.element != item) {
    currNode = currNode.next;
  }
  return currNode;
}
function insert(newElement, item) {
  var newNode = new Node(newElement);
  var current = this.find(item);
  newNode.next = current.next;
  current.next = newNode;
}
/*测试例子*/
var num = new LList();
num.insert("a1","head");
num.insert("b1","a1");
num.insert("c1","b1");
num.display();// a1 b1 c1
num.remove("b1");
num.display();// a1 c1

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS基于对象的链表实现与使用方法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery 引发两次$(document.ready)事件
Jan 15 Javascript
Extjs TimeField 显示正常时间格式的代码
Jun 28 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
Feb 02 Javascript
JS检测移动端横竖屏的代码
May 30 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
JS实现的JSON数组去重算法示例
Apr 11 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
小程序实现录音上传功能
Nov 22 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
JS栈stack类的实现与使用方法示例
Jan 31 #Javascript
JQuery中queue方法用法示例
Jan 31 #jQuery
JavaScript两种计时器的实例讲解
Jan 31 #Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 #Javascript
实例讲解v-if和v-show的区别
Jan 31 #Javascript
详解使用angular框架离线你的应用(pwa指南)
Jan 31 #Javascript
Angular PWA使用的Demo示例
Jan 31 #Javascript
You might like
javascript some()函数用法详解
2014/11/13 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
JS内部事件机制之单线程原理
2018/07/02 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
值传递还是引用传递
2015/02/08 面试题
成绩单家长评语大全
2014/04/16 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
学校重阳节活动总结
2015/03/24 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
简单的辞职信模板
2015/05/12 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
python中使用redis用法详解
2022/12/24 Redis