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
    }
}
复制代码

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


相关文章
|
7月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
320 1
|
8月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
241 0
|
11月前
|
JavaScript 数据可视化 前端开发
three.js简单实现一个3D三角函数学习理解
1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好的跨平台和跨浏览器兼容性,让用户无需安装任何插件就可以在现代浏览器上观看3D内容。
395 0
|
12月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
232 0
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法
|
存储 监控 算法
员工电脑监控系统中的 C# 链表算法剖析-如何监控员工的电脑
当代企业管理体系中,员工电脑监控已成为一个具有重要研究价值与实践意义的关键议题。随着数字化办公模式的广泛普及,企业亟需确保员工对公司资源的合理利用,维护网络安全环境,并提升整体工作效率。有效的电脑监控手段对于企业实现这些目标具有不可忽视的作用,而这一过程离不开精妙的数据结构与算法作为技术支撑。本文旨在深入探究链表(Linked List)这一经典数据结构在员工电脑监控场景中的具体应用,并通过 C# 编程语言给出详尽的代码实现与解析。
242 5
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
266 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
503 30
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
731 25
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
2873 11
架构学习:7种负载均衡算法策略
下一篇
开通oss服务