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 Date对象使用总结
May 14 Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
Dec 08 Javascript
Sort()函数的多种用法
Mar 20 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
jQuery事件_动力节点Java学院整理
Jul 05 jQuery
小程序图片剪裁加旋转的示例代码
Jul 10 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
基于vue的换肤功能的示例代码
2017/10/10 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
分享vim python缩进等一些配置
2018/07/02 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python 定义只读属性的实现方式
2020/03/05 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
中国制造网:Made-in-China.com
2019/10/25 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js