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 相关文章推荐
javascript下查找父节点的简单方法
Aug 13 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
vue-loader教程介绍
Jun 14 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
javascript流程控制语句集合
Sep 18 Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
Oct 22 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
原生js实现无缝轮播图
Jan 11 Javascript
深入浅析vue全局环境变量和模式
Apr 28 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
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python中的pprint折腾记
2015/01/21 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python 日期排序的实例代码
2019/07/11 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python多分支if语句的使用
2020/09/03 Python
Python解析微信dat文件的方法
2020/11/30 Python
Python排序函数的使用方法详解
2020/12/11 Python
python中pivot()函数基础知识点
2021/01/03 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
淘宝客服自我总结鉴定
2014/01/25 职场文书
化学教学随笔感言
2014/02/19 职场文书
教职工代表大会主持词
2014/04/01 职场文书
触电现场处置方案
2014/05/14 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技