最近在看《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数据结构链表知识详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- 徐小凤 《徐小凤殿堂18首》24K金碟[WAV+CUE]
- 保时捷原厂车载爆棚动态试音碟《Panamera_Soundtrack》DTS[WAV分轨][1G]
- 容祖儿《小小》香港首版 [WAV+CUE][1.1G]
- 莫文蔚《拉活…》SONY [WAV+CUE][1G]
- Beyond《极品天碟》LPCD45II首批限量版[WAV+CUE][1.7G]
- HIFI示范巅峰之作《情解药·Hi-Fi心魂》2CD[WAV+CUE]
- 房东的猫2021-关于彻夜不眠的事情(EP)[青柴文化][WAV+CUE]
- 群星.1993-一曲成名·青春无悔【飞碟】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 天籁女声《2024第31届上海国际高端音影展纪念CD》[WAV+CUE][1.1G]
- 姚斯婷 《敢爱敢做》头版限量编号24K金碟[低速原抓WAV+CUE][1.2G]
- 雷婷 《把爱留在昨天》紫银合金AQCD[低速原抓WAV+CUE][1.1G]
- 董文华2024-《精选30年·长城长HQ》头版限量[WAV+CUE]
- 柏菲·魏松2024-《跟你走》限量开盘母带ORMCD[WAV+CUE]
- 柏菲·甘雅丹《雅鲁藏布》限量开盘母带ORMCD[WAV+CUE]