JavaScript数据结构链表知识详解


Posted in Javascript onNovember 21, 2016

最近在看《javascript数据结构和算法》这本书,补一下数据结构和算法部分的知识,觉得自己这块是短板。

链表:存储有序的元素集合,但不同于数组,链表中的元素在内存中不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。

好处:可以添加或移除任意项,它会按需扩容,且不需要移动其他元素。

与数组的区别:

    数组:可以直接访问任何位置的任何元素;

    链表:想要访问链表中的一个元素,需要从起点(表头)开始迭代列表直到找到所需的元素。

做点小笔记。

function LinkedList(){
var Node = function(element){
this.element = element
this.next = null
}
var length = 0
var head = null
this.append = function(element){
var node = new Node(element)
var current
if(head == null){ //链表为空
head = node
}else{ //链表不为空
current = head
//循环链表,直到最后一项
while(current.next){
current = current.next
}
current.next = node
}
length ++ //更新链表长度
}
this.insert = function(position,element){
var node = new Node(element)
var current = head
var previous
var index = 0
if(position>=1 && position<=length){ //判断是否越界
if(position === 0){ //插入首部
node.next = current
head = node
}else{
while(index++ < position){
previous = current
current = current.next
}
node.next = current
previous.next = node
}
length ++ //更新链表长度
return true
}else{
return false
}
}
this.indexOf = function(element){
var current = head
var index = -1
while(current){
if (element === current.element) {
return index
}
index++
current = current.next
}
return -1
}
this.removeAt = function(position){
if(position>-1 && position<length){ //判断是否越界
var current = head
var previous
var index = 0
if(position === 0){ //移除第一个元素
head = current.next
}else{
while(index++ < position){
previous = current
current = current.next
}
previous.next = current.next //移除元素
}
length -- //更新长度
return current.element
}else{
return null
}
}
this.remove = function(element){
var index = this.indexOf(element)
return this.removeAt(index)
}
this.isEmpty = function(){
return length == 0
}
this.size = function(){
return length
}
this.toString = function(){
var current = head
var string = ""
while(current){
string = "," + current.element
current = current.next
}
return string.slice(1)
}
this.getHead = function(){
return head
}
}

以上所述是小编给大家介绍的JavaScript数据结构链表知识详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS中简单的实现像C#中using功能(有源码下载)
Jan 09 Javascript
当json键为数字时的取值方法解析
Nov 15 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
js图片处理示例代码
May 12 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
vue+elementUI 实现内容区域高度自适应的示例
Sep 26 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 #Javascript
Node.js测试中的Mock文件系统详解
Nov 21 #Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 #Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 #Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 #Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 #Javascript
js原生实现FastClick事件的实例
Nov 20 #Javascript
You might like
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
js微信分享实现代码
2020/10/11 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
python实现外卖信息管理系统
2018/01/11 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
开办饭店创业计划书
2013/12/28 职场文书
三年级音乐教学反思
2014/01/28 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
党务公开方案
2014/05/06 职场文书
孔子观后感
2015/06/08 职场文书