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实现的完美渐变弹出层效果代码
Apr 02 Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
Jqprint实现页面打印
Jan 06 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
Jun 18 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
vue实现匀速轮播效果
Jun 29 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
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php取得字符串首字母的方法
2015/03/25 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
javascript 数组的方法集合
2008/06/05 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
js style动态设置table高度
2014/10/21 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
澳洲的服装老品牌:SABA
2018/02/06 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
经典c++面试题二
2015/08/14 面试题
挑战杯创业计划书的写作指南
2014/01/07 职场文书
单位办理社保介绍信
2014/01/10 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
班级学习计划书
2014/04/27 职场文书
十周年庆典策划方案
2014/06/03 职场文书
党性分析自查总结
2014/10/14 职场文书
作风建设整改方案
2014/10/27 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
四十九个javascript小知识实用技巧
2021/11/20 Javascript
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技