JS数据结构&算法学习——链表

简介: 终于到链表篇了,掌握了链表就大概掌握了半个数据结构

链表

终于到链表篇了,掌握了链表就大概掌握了半个数据结构

链表是一种线性的存储结构,其节点之间的逻辑关系是通过节点所对应的引用(指针)来进行关联,其链表中的每个节点含有两部分,一个为存储数据(data)的,一个是作为存储引用(next),也就是相邻节点的地址,其实最后一个节点的next为空

1.webp.jpg

生活应用

我们生活中能体现链表的特点的就是列车了,列车一个车厢一个车厢连在一起,乘客是data,而列车的钩子为next,指向下一个列车,我们想在中间添加一个车厢只需要将两节车厢断开中间加入一个新的车厢,并将前一个车厢的钩子指向新的车厢,新的车厢的钩子指向下一个车厢,删除也是如此。

链表 VS 数组

参照之前的数组篇,可以对比一下链表和数组之前的区别

链表与数组同为线性的存储结构,但是有很大的区别如下:

  1. 数组的创建需要一段连续的存储空间,因为其物理地址是连续的,而链表的物理地址是可以是不连续的,所以它的创建只需要创建一个头结点即可
  2. 由于数组定义的限制所在,若不满足容量需求则需要麻烦的扩容,因为其连续性,扩容很麻烦,甚至来说如果物理地址被占用是无法进行扩容的,而链表可以任意增加容量,也就是说无穷大
  3. 数组进行插入和删除操作需要进行对目标元素后的所有元素进行移动,耗费时间极长,虽然JS给我们提供的Array类能帮助我们进行插入及删除等操作,比如说splice,但是底层原理还是不变的,而链表的插入与删除只需要通过修改引用值就可以完成,时间复杂度接近于O(1)
  4. 链表进行元素查找过程是需要从头部开始根据引用来寻找目标值,而数组查找元素只需要使用下标即可

链表封装

我们了解了链表的结构与其逻辑后封装了一个链表类如下:

function LinkList() {
    this.head = null
    this.length = 0
    function Node(data, next) {
        this.data = data
        this.next = next
    }
}
复制代码

链表的封装需要考虑整体的结构,在链表类内再定义一个节点类,因为链表中的节点有两个部分即数据和引用,和优先级队列封装类似


相关文章
|
1月前
|
存储 监控 算法
局域网监控其他电脑的设备信息管理 Node.js 跳表算法
跳表通过分层索引实现O(logn)的高效查询、插入与删除,适配局域网监控中设备动态接入、IP映射及范围筛选等需求,相比传统结构更高效稳定,适用于Node.js环境下的实时设备管理。
108 9
|
3月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
182 0
|
1月前
|
存储 监控 JavaScript
企业上网监控系统的恶意 URL 过滤 Node.js 布隆过滤器算法
布隆过滤器以低内存、高效率特性,解决企业上网监控系统对百万级恶意URL实时检测与动态更新的难题,通过概率性判断实现毫秒级过滤,内存占用降低96%,适配大规模场景需求。
212 3
|
1月前
|
存储 监控 算法
电脑管控软件的进程优先级调度:Node.js 红黑树算法
红黑树凭借O(log n)高效插入、删除与查询特性,适配电脑管控软件对进程优先级动态调度的高并发需求。其自平衡机制保障系统稳定,低内存占用满足轻量化部署,显著优于传统数组或链表方案,是实现关键进程资源优先分配的理想选择。
117 1
|
2月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
225 3
|
4月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
148 1
|
4月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
144 0
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
151 2

热门文章

最新文章