
线性数据结构
查询速度快:由于数组存储是基于偏移地址访问的,直接通过 内存紧凑:数组的存储空间是连续的,减少了碎片问题。 内存碎片:当数组较大时,系统可能出现内存碎片,影响新存储空间的获取。 长度不灵活:数组的长度固定,难以进行添加或删除操作。 空间利用低效:每个节点都需要额外存储一个引用指向下一个节点。 查询速度慢:要访问链表中的某个节点需要逐步遍历到该节点,时间复杂度为O(n)。 灵活性高:支持高效添加和删除操作。 内存利用高效:链表可以扩展到需要的大小,无需担心内存碎片。 查询效率低:需要从头节点开始逐步访问,导致查找某个节点时间较长。 内存浪费:每个额外节点需要额外的存储空间,增加了内存占用。
发布日期:2021-05-20 04:10:43
浏览次数:13
分类:精选文章
本文共 1480 字,大约阅读时间需要 4 分钟。
线性数据结构之数组与链表
在线性数据结构中,数组和链表是最常见的两种类型,它们在数据存储和操作上各有优劣之处。
数组
数组的核心特点是固定长度,存储空间必须是连续的,这使得数组在内存中占用较为紧凑。然而,数组的长度无法随意更改,这也是数组性能优越的原因之一。
延伸思考:为什么数组不能直接向后扩容?这是因为操作系统分配内存时通常会分配一个较大的连续块,当数组长度不足时,系统需要通过重新分配一个更大的存储空间,并将原数组数据复制到新位置。这种操作虽然效率不高,但由于被优化了,作为开发者,我们不需要手动管理数组长度。
数组的优点
a[x]
可以快速访问特定位置的元素。数组的缺点
链表
与数组不同,链表以动态链接的方式存储数据,其节点通常包含数据值和指向下一个节点的引用。链表的关键特点是柔性,高度灵活。
链表的特点
链表的优点
链表的缺点
链表的使用场景
链表特别适合需要频繁插入、删除操作且数据规模不大或无法预先确定大小的场景。
链表操作示例
// 创建链表节点function Node(value) { this.value = value; this.next = null;}// 例子:var a = new Node(1);var b = new Node(2);var c = new Node(3);var d = new Node(4);a.next = b;b.next = c;c.next = d;// 遍历链表function loopLink(root) { var temp = root; while (temp != null) { console.log(temp.value); temp = temp.next; }}// 递归遍历function loopLink1(root) { if (root == null) { return; } console.log(root.value); loopLink1(root.next);}// 链表逆置function nizhi(root) { if (root.next == null) { return root; } var lastNode = nizhi(root.next); root.next = null; // 上结点的前一个指向当前上结点的前一个 if (root.next != null) { root.lastNode = root; } return lastNode;}
链表在实际应用中的表现取决于具体需求,两者各有优劣,选择时需要综合考虑数据规模和操作频率。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月15日 17时35分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CUDA9.1、cuDNN7在Ubuntu16.04上的安装
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15
SpringBoot与缓存(JSR-107、Spring缓存抽象)
2019-03-15
ERROR 总结
2019-03-15
查找最小值栈的O(1)
2019-03-15
淘宝天猫双十一养猫组队怎么踢人
2019-03-15
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
2019-03-15
概念唱片Plastic Beach封面高清壁纸
2019-03-15
旅游后期效果Ography Lightroom预设
2019-03-15
2017CS231n笔记5.CNN
2019-03-15
vue项目报错集合
2019-03-15
图片链接
2019-03-15
LINUX-WIFI无线接入的一些东西
2019-03-15
word文档手写字母总会大写问题
2019-03-15
Redis中的key
2019-03-15