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的图片懒加载js
Jun 30 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
Egret引擎开发指南之创建项目
Sep 03 Javascript
Jquery 垂直多级手风琴菜单附源码下载
Nov 17 Javascript
理解JS事件循环
Jan 07 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
Bootstrap Table列宽拖动的方法
Aug 15 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 Javascript
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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
firefox中JS读取XML文件
2006/12/21 Javascript
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
js实现常用排序算法
2016/08/09 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python爬取网易云音乐热门评论
2017/03/31 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
浅谈Python3中print函数的换行
2020/08/05 Python
python破解同事的压缩包密码
2020/10/14 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
招商经理岗位职责
2013/11/16 职场文书
自主招生自荐书
2013/11/29 职场文书
个人简历自我评价
2014/01/06 职场文书
公司培训欢迎词
2014/01/10 职场文书
2014年教师节寄语
2014/04/03 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
租房协议书怎么写
2014/04/10 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python