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入门问答 整理的几个常见的初学者问题
Feb 22 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
element实现合并单元格通用方法
Nov 13 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
JS canvas实现画板和签字板功能
Feb 23 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
python实现用户登陆邮件通知的方法
2015/07/09 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
详解如何修改python中字典的键和值
2020/09/29 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
献爱心标语
2014/06/21 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
高三毕业评语
2014/12/31 职场文书
离婚案件原告代理词
2015/05/23 职场文书
学校财务管理制度
2015/08/04 职场文书
学校教代会开幕词
2016/03/04 职场文书