数据的存储结构有哪些:分两类,适配不同场景
数据的存储结构分为顺序存储、链式存储、索引存储、散列存储四种核心类型,是数据逻辑结构在计算机内存中的物理映射,四种结构在读写速度、空间利用率、扩容成本上差异明显,其中顺序存储适合静态固定数据、链式存储适合频繁增删数据、索引存储适合快速查询场景、散列存储适合精准匹配查询,所有结构均适用于计算机数据结构学科通用考核标准,仅在嵌入式极小内存设备中部分结构无法落地使用。
数据的存储结构之顺序存储
顺序存储是把数据元素按逻辑顺序,依次存放在连续的内存单元中,数据的逻辑位置和物理位置完全对应。你可以直接通过数组下标精准定位数据,随机访问速度较快,空间利用率较高,不存在额外的内存开销。该结构的短板十分明显,内存空间需要提前分配,无法灵活伸缩,插入和删除数据时,需要批量移动后续元素,操作耗时会明显增加。日常编程中的数组、顺序表都是典型的顺序存储结构。
数据的存储结构之链式存储
链式存储不要求内存空间连续,每个数据元素除了存储自身数据,还会额外存储指针,用来记录下一个元素的内存地址,依靠指针串联起整体数据逻辑关系。你无需提前划定固定内存,可根据数据量动态扩容、删减元素,插入和删除操作仅需修改指针指向,无需移动大量数据,动态适配性较强。这种结构无法实现随机访问,查找指定数据需要从头遍历链表,且每个节点的指针会占用额外内存,空间利用率相对偏低,单链表、双向链表、栈链结构均采用该存储方式。
数据的存储结构之索引存储
索引存储会将所有数据元素单独存放,同时建立专属索引表,索引表中记录每个数据的关键字和对应的物理地址,类似书籍的目录体系。你可以通过索引快速定位数据位置,大幅提升查询效率,数据增删时仅需同步更新索引表,整体操作效率较为均衡。该结构需要单独占用内存存储索引信息,数据量较小时,索引占用的多余空间会造成资源浪费,数据库数据表、文件系统的索引文件是该结构的典型应用。
数据的存储结构之散列存储
散列存储也叫哈希存储,通过哈希函数对数据关键字进行运算,直接得出数据的物理存储地址,实现关键字与存储位置的直接映射。该结构的精准查询、插入、删除速度在四种结构中表现突出,多数情况下可实现一次运算完成数据定位。哈希冲突是该结构的核心问题,不同关键字可能算出相同存储地址,需要通过链地址法、开放定址法解决,会小幅增加操作复杂度,哈希表、字典数据结构均使用散列存储。
四种结构适配场景各有侧重。
| 存储结构 | 核心优势 | 主要短板 | 适配场景 |
|---|---|---|---|
| 顺序存储 | 随机访问快、无冗余空间 | 增删慢、无法动态扩容 | 固定数据量、高频查询场景 |
| 链式存储 | 增删高效、动态扩容灵活 | 遍历查询慢、有空间冗余 | 数据频繁变动、低频查询场景 |
| 索引存储 | 综合查询性能优 | 索引占用额外内存 | 大数据量、高频检索场景 |
| 散列存储 | 精准读写速度快 | 存在哈希冲突风险 | 精准匹配查询、键值存储场景 |
嵌入式设备内存小于64KB时,索引存储、散列存储无法正常使用,冗余内存会导致设备运行卡顿。
日常开发中优先根据数据变动频率选结构。
静态数据首选顺序存储,动态数据首选链式存储。
