当前位置: 首页 > article >正文

线性表-线性存储结构

存储逻辑关系为“一对一”特性相同元素数据有限序列

顺序存储结构(顺序表)

不破坏数据的直接前驱和直接后继,把它们按次序存储到一片连续的内存空间中。

链式存储结构(链表)

将所有的数据分散或者连续存储在内存中,数据的直接前驱和直接后继使用指针指示

总结

比较维度顺序存储结构(顺序表)链式存储结构(链表)
存储方式逻辑上相邻的元素在物理位置上也相邻,使用连续的存储单元元素的存储单元可不连续,通过指针连接各个元素
内存分配静态分配,需预先确定容量并分配连续空间动态分配,根据需要随时为新节点分配内存
数据访问可随机访问,通过下标直接访问元素,时间复杂度为 O(1) 只能顺序访问,需从表头开始遍历查找,时间复杂度为 O(n) 
插入删除操作插入或删除元素可能需要移动大量元素,时间复杂度为 O(n) 只需修改相关节点的指针一般时间复杂度为 O(1) ,但若要先定位操作位置,则时间复杂度与定位操作有关
空间利用率可能存在空间浪费或不足的情况,取决于初始分配大小按需分配空间,理论上空间利用率高,但指针会占用一定空间
实现难度相对简单,主要操作是对数组下标的计算和元素移动相对复杂,涉及指针的操作和节点的管理
适用场景适合频繁随机访问、数据量相对固定的场景,如数组排序适合频繁插入删除、数据量不确定的场景,如消息队列


http://www.kler.cn/a/514540.html

相关文章:

  • 【HarmonyOS NEXT】华为分享-碰一碰开发分享
  • 《重生到现代之从零开始的C++生活》—— 类和对象1
  • 工程上LabVIEW常用的控制算法有哪些
  • 2025-1-21 Newstar CTF web week1 wp
  • uniapp(小程序、app、微信公众号、H5)预览下载文件(pdf)
  • Spring Boot 中使用 @Transactional 注解配置事务管理
  • 从监控软件的敏感信息报警功能看企业信息安全新趋势
  • Docker 国内镜像源
  • 【VMWare Workstation 17】安装Debian 12.8DVD
  • LightRAG源码:NetworkXStorage测试(1)
  • vscode如何选用不同的python的解释器
  • Yii框架中的队列:如何实现异步操作
  • MySQL(1)概述
  • # [Unity] [游戏开发]基础协程应用与实现详解
  • 基于quartz,刷新定时器的cron表达式
  • R语言学习笔记之开发环境配置
  • Spring Boot 邂逅Netty:构建高性能网络应用的奇妙之旅
  • iOS 权限管理:同时请求相机和麦克风权限的最佳实践
  • 工业网关边缘计算:智能制造的强劲引擎
  • python学习笔记4-字符串和字节转换
  • 14_音乐播放服务_字典缓存避免重复加载
  • Dart语言的云计算
  • Linux 执行 fdisk -l 出现 GPT PMBR 大小不符 解决方法
  • 一部手机如何配置内网电脑同时访问内外网
  • 【面试题】Java 多线程编程基础知识
  • 分析一个深度学习项目并设计算法和用PyTorch实现的方法和步骤