首页/数据结构/绪论/数据的存储结构 🔗 在 Obsidian 中打开
数据结构 · 绪论

数据的存储结构

难度 ★★重要度 ★★★★ 考查频率 高题型 选择 / 简答 顺序存储链式存储索引存储散列存储
速查
存储结构(物理结构)是数据在计算机中的实际存储方式,含元素本身与关系的表示。四大类顺序 / 链式 / 索引 / 散列。顺序和链式最基本;散列只能用于集合结构。

概述

存储结构(物理结构)是数据在计算机中的实际存储方式,包括数据元素本身的存储数据元素之间关系的表示

四种基本存储结构:

  1. 顺序存储:逻辑相邻的元素物理上也相邻,用地址相邻性表示逻辑关系。
  2. 链式存储:物理上不一定相邻,通过指针表示逻辑关系。
  3. 索引存储:建立索引表(关键字,地址)加速查找。
  4. 散列存储:由散列函数直接计算存储地址。

核心概念

顺序存储:元素 $a_i$ 的地址 $\text{Loc}(a_i) = \text{Loc}(a_0) + i \times \text{sizeof}(\text{elem})$,支持随机访问 $O(1)$。

链式存储:每个结点含数据域和指针域,逻辑相邻靠指针维持,插入删除 $O(1)$ 但无法随机访问。

索引存储:数据部分通常仍是顺序存储,索引表加速查找(如数据库索引、B+ 树)。

散列存储:根据关键字经散列函数算地址,查找平均 $O(1)$,但需处理冲突,且不能表示前后件关系

关键性质

存储结构优点缺点典型应用
顺序存储随机访问 $O(1)$,空间利用率高插入删除 $O(n)$,需预分配顺序表、数组
链式存储插入删除 $O(1)$,动态分配不能随机访问,有指针开销链表、树、图
索引存储查找效率高 $O(\log n)$需额外索引表空间数据库索引、B+ 树
散列存储查找 $O(1)$ 平均需处理冲突,不能顺序遍历哈希表

常见考法

命题套路判断给定描述属于哪种存储结构;比较优劣;给定场景选择存储结构(频繁查找→索引/散列,频繁增删→链式,随机访问→顺序)。
考法解题套路
判断存储结构地址相邻→顺序,指针→链式,索引表→索引,哈希函数→散列
比较优劣从访问方式、增删效率、空间开销三方面
选存储结构频繁查找→索引/散列;频繁增删→链式;随机访问→顺序

易错点

必记
  1. 顺序 $\neq$ 只能数组实现:核心是"物理相邻表示逻辑相邻",本质地址连续。
  2. 链式物理不一定相邻:逻辑关系靠指针维持,逻辑相邻 $\neq$ 物理相邻。
  3. 散列不能表示逻辑关系:只适用于集合结构,不能用于线性/树形/图形。
  4. 索引 = 顺序 + 索引:数据部分通常仍是顺序存储。
  5. 存储 $\neq$ 数据结构:数据结构 = 逻辑结构 + 存储结构 + 运算。

核心结论

  1. 四种中顺序和链式最基本,索引和散列可看作其变体或组合。
  2. 散列存储只能用于集合结构
  3. 存储结构的选择直接影响算法效率,是课程核心议题。
  4. 同一逻辑结构(如线性表)可用顺序表或链表实现,体现逻辑/存储独立性。

记忆卡片

四种存储结构?
顺序、链式、索引、散列。
顺序如何表关系?
通过物理地址相邻性。
链式如何表关系?
通过指针。
哪种只用于集合?
散列存储。
顺序支持随机访问?
支持,O(1)。
索引存储本质?
顺序 + 索引表加速。

交互动画 · 四种存储结构逐步演示

地址连续 顺序 结点+指针 链式 索引表 索引表定位 索引 H(k) H(k) 直接定位 散列
地址相邻 ⇒ 随机访问指针连接 ⇒ 增删快 索引表 ⇒ 查找快散列 ⇒ 平均 O(1)
点击「播放」或「下一步」,依次认识四种存储结构
顺序与链式是最基本的两种;索引与散列是在其上的加速组织

相关知识点

logical-structure-of-data abstract-data-type-adt

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。