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 30 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
jquery选择器原理介绍($()使用方法)
Mar 25 Javascript
jQuery unbind 删除绑定事件详解
May 24 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
Jul 18 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
js实现方块上下左右移动效果
Aug 17 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
vue el-table实现自定义表头
Dec 11 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
laravel-admin 中列表筛选方法
2019/10/03 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python实现连接mongodb的方法
2015/05/08 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
深入理解Python装饰器
2016/07/27 Python
Python中format()格式输出全解
2019/04/12 Python
python读取并写入mat文件的方法
2019/07/12 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
我的大学生活职业生涯规划
2014/01/02 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
爱与责任演讲稿
2014/05/20 职场文书
个人培训总结
2015/03/05 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
python 批量压缩图片的脚本
2021/06/02 Python