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控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
理解Javascript_09_Function与Object
Oct 16 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
Jun 08 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
浅谈Fetch 数据交互方式
Dec 20 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 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
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
详解flask入门模板引擎
2018/07/18 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python爬虫增加访问量的方法
2019/08/22 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
暑假实习求职信范文
2013/09/22 职场文书
化学工程专业求职信
2014/08/10 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2014年宣传工作总结
2014/11/18 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android