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 相关文章推荐
juqery 学习之五 文档处理 插入
Feb 11 Javascript
jquery 选项卡效果 新手代码
Jul 08 Javascript
javascript 事件处理程序介绍
Jun 27 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
详解a++和++a的区别
Aug 30 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
Nov 11 Javascript
canvas 中如何实现物体的框选
Aug 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
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
python中强大的format函数实例详解
2018/12/05 Python
django2.0扩展用户字段示例
2019/02/13 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
python可视化text()函数使用详解
2020/02/11 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
称象教学反思
2014/02/03 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
建筑横幅标语
2014/10/09 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP