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 字符编码规则
May 04 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
jQuery插件扩展操作入门示例
Jan 16 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
Ionic2调用本地SQlite实例
Apr 22 Javascript
vue-cli项目使用mock数据的方法(借助express)
Apr 15 Javascript
JS继承实现方法及优缺点详解
Sep 02 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
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python argparse模块应用实例解析
2019/11/15 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
椰子猫砂:CatSpot
2018/08/27 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
中考标语大全
2014/06/05 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
文明倡议书
2015/01/19 职场文书
会议欢迎词
2015/01/23 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
校运会宣传稿大全
2015/07/23 职场文书
早安问候语大全
2015/11/10 职场文书
Django程序的优化技巧
2021/04/29 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
浅析JavaScript中的变量提升
2022/06/01 Javascript
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技