数据结构中逻辑结构和存储结构对应有哪些

逻辑结构 (数据之间的抽象关系) + 存储结构(这些关系在计算机内存中的具体实现方式) = 数据结构

一、逻辑结构(完整分类)

注:集合结构有时单独列出,有时归入非线性结构。

类别 子类型 典型例子
线性结构 一般线性表 顺序表、链表
受限线性表 栈、队列
推广线性表 串(字符线性表)
非线性结构 树形结构 二叉树、二叉搜索树、堆、B树
图形结构 有向图、无向图
集合结构 哈希表(逻辑上可视为集合)、并查集
  1. 集合:数据元素间无特定关系(属于同一集合)。

  2. 线性结构:一对一关系(如线性表、栈、队列)。

  3. 树形结构:一对多关系(如树、堆)。

  4. 图形结构:多对多关系(如有向图、无向图)。

二、存储结构(计算机中的实现方式)

主要有四种基本方式(可组合使用):

存储结构 核心特点 对应的逻辑结构示例
顺序存储 用连续内存单元存储,逻辑相邻→物理相邻 线性结构(数组、栈、队列)、完全二叉树(堆)
链式存储 用附加指针连接结点,不要求物理连续 线性表(链表)、树(二叉链表)、图(邻接表)
索引存储 建立索引表,通过索引项访问数据 线性结构(索引顺序表)、树(B+树等)
哈希存储 通过哈希函数直接计算存储地址 集合、线性结构(哈希表)
"逻辑上相邻,物理上不一定相邻"
  • 顺序存储:逻辑相邻 → 物理相邻

  • 链式存储:逻辑相邻 → 物理不一定相邻(靠指针)

"存储密度"对比
  • 顺序存储:存储密度 ≈ 1(几乎没有额外开销)

  • 链式存储:存储密度 < 1(每个节点多一个/多个指针

三、逻辑结构与存储结构的完整对应表

逻辑结构 常用存储结构(组合)
线性表 顺序存储(顺序表) 链式存储(单/双/循环链表) 索引存储(索引顺序表)
顺序存储(顺序栈) 链式存储(链栈)
队列 顺序存储(循环队列) 链式存储(链队列)
顺序存储(定长/堆分配) 链式存储(块链)
树 / 二叉树 顺序存储(完全二叉树/堆) 链式存储(二叉/三叉链表) 索引存储(B/B+树)
顺序存储(邻接矩阵) 链式存储(邻接表、十字链表) 索引/散列(边集数组+索引)
集合(哈希表) 散列存储 + 顺序/链式(处理冲突)

四、逻辑结构的"操作特性"与存储结构的"实现约束"

不能只看对应关系,还要看约束

逻辑结构 隐含的操作特性 存储结构带来的限制
后进先出(LIFO) 顺序栈有最大容量限制;链栈无容量上限但需要额外指针空间
队列 先进先出(FIFO) 顺序队列容易"假溢出",所以常用循环队列;链队列则无此问题
树(二叉树) 父子关系、层次遍历 顺序存储只适合完全二叉树,普通二叉树会浪费大量空间
任意顶点间可达 邻接矩阵适合稠密图,邻接表适合稀疏图

关键点:逻辑结构定义"能做什么",存储结构决定"做得好不好"(时间/空间代价)。

五、不同存储结构的对比

存储结构 优点 缺点
顺序存储 随机访问快(O(1))、空间利用率高(无指针开销) 插入/删除慢(需移动元素)、需预先分配连续空间
链式存储 插入/删除快(O(1) 已知位置)、动态扩展 随机访问慢(O(n))、额外指针占用空间
索引存储 查找较快、支持范围查询 维护索引有额外开销、索引本身也占空间
散列存储 查找极快(O(1) 平均) 不支持顺序遍历、存在冲突问题、空间利用率不稳定
复杂度对比(同一逻辑结构,不同存储结构)
逻辑结构 存储结构 访问第i个 插入/删除(已知位置) 查找(按值) 空间占用
线性表 顺序表 O(1) O(n) O(n) 较省
线性表 链表 O(n) O(1) O(n) 额外指针
顺序栈 O(1)(仅栈顶) O(1) --- 固定容量
链栈 O(1)(仅栈顶) O(1) --- 动态扩展
队列 循环队列 O(1)(仅队首/队尾) O(1) --- 可能假溢出
队列 链队列 O(1)(仅队首/队尾) O(1) --- 无假溢出

六、容易被忽略的"混合存储结构"

实际中很多数据结构是混合使用多种存储方式的:

数据结构 实际存储方式 混合成分
哈希表(拉链法) 散列存储 + 链式存储 数组(顺序)+ 链表(链式)
B+树 索引存储 + 顺序存储 多级索引 + 叶子节点顺序链表
邻接表(图) 顺序存储 + 链式存储 顶点数组(顺序)+ 边链表(链式)
跳表 链式存储 + 索引存储 多级链表 + 前进指针(类似索引)

结论:不要认为一个数据结构只用一种存储方式,组合往往更强大。

相关推荐
_日拱一卒6 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
2401_868534789 小时前
【无标题】
数据结构·r语言
Mr. zhihao9 小时前
Redis五大高级数据结构:原理-场景-底层-横向对比
数据结构·redis
QiLinkOS9 小时前
【从实验室到商业战场:发明专利如何重塑科技与企业的共生生态】
大数据·c语言·数据结构·c++·人工智能·单片机·算法
如此这般英俊10 小时前
手撕Claude Code—第一章 agent-loop
数据结构·人工智能·语言模型·自然语言处理
过期动态11 小时前
【LeetCode 热题 100】接雨水
java·数据结构·算法·leetcode·职场和发展
青山师12 小时前
动态规划算法深度解析:从状态转移方程到工业级优化
数据结构·算法·面试·动态规划·代理模式·java面试
Severus_black14 小时前
【初阶数据结构与算法】八大排序之非比较排序(计数排序),一次性讲清!
数据结构·算法·排序算法
QiLinkOS14 小时前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
影寂ldy15 小时前
C#Dictionary字典
数据结构