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 相关文章推荐
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
一个原生的用户等级的进度条
Jul 03 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
JavaScript函数详解
Nov 17 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
利用Angular.js编写公共提示模块的方法教程
May 28 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
vue2.0使用swiper组件实现轮播的示例代码
Mar 03 Javascript
vue cli安装使用less的教程详解
Jul 12 Javascript
如何基于JS截获动态代码
Dec 25 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 读取Postgresql中的数组
2013/04/14 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
js实现旋转木马效果
2017/03/17 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
jQuery实现滑动开关效果
2020/08/02 jQuery
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
初中科学教学反思
2014/01/21 职场文书
迟到检讨书大全
2014/01/25 职场文书
年终晚会主持词
2014/03/25 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
不要在HTML中滥用div
2021/05/08 HTML / CSS
理解python中装饰器的作用
2021/07/21 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python