前端进阶:链表的概念和应用
current = current.next; } previousNode.next = current.next; } length --; return current.el }else { return null } }; 2.6 移除指定节点移除指定节点实现非常简单,我们只需要利用之前实现好的查找节点先找到节点的位置,然后再用实现过的removeAt即可,代码如下: // 移除指定节点 this.remove = (el) => { let idx = this.indexOf(el); this.removeAt(idx); }; 2.7 获取节点长度这里比较简单,直接上代码: // 返回链表长度 this.size = () => { return length }; 2.8 判断链表是否为空判断链表是否为空我们只需要判断长度是否为零即可: // 返回链表长度 this.size = () => { return length }; 2.9 打印节点打印节点实现方式有很多,大家可以按照自己喜欢的格式打印,这里笔者直接将其打印为数组格式输出,代码如下: // 将链表转化为数组返回 this.toArray = () => { let current = head, results = []; while(current) { results.push(current.el); current = current.next; } return results }; 这样,我们的单向链表就实现了,那么我们可以这么使用: let link = new linkedList() // 添加节点 link.append(1) link.append(2) // 查找节点 link.indexOf(2) // ... 3.原生javascript实现一条个双单向链表有了单向链表的实现基础,实现双向链表也很简单了,我们无非要关注的是双向链表的节点创建,这里笔者实现一个例子供大家参考: let Node = function(el) { this.el = el; this.previous = null; this.next = null; } let length = 0 let head = null // 用来存储头部元素的引用 let tail = null // 用来存储尾部元素的引用 (编辑:浙我家) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Telnet是什么命令 Telnet命令的使用方法介绍
- MobTech与中移互联网强联合 北上广深4城巡回沙龙展实力
- 中文存数据库乱码
- 数据库 – 在Microsoft Access(2010)中计算年和月的年龄
- @OrderBy导致java.lang.ClassCastException:antlr.CommonT
- ClassCastException:java.math.BigInteger在连接MySQL时无
- 今晚罗老师发飙补贴:一线大牌直播半价抢
- 奥比中光为OPPO全球首款旗舰电视提供视觉解决方案,抢占智能
- vivo 5G比邻计划全面推进 价格“贴近”成本价
- 如何解决当MySQL数据库碰到Syn Flooding问题