Appearance
题目
适用于压缩存储稀疏矩阵的两种存储结构是( )。
错因
B
误把"邻接矩阵"当成一种压缩存储。邻接矩阵其实就是稠密的二维矩阵(用来存图),存非零项时 0 也照样占空间,和"压缩"完全相反。看到"矩阵"二字直觉以为相关,是这道题最常见的坑。
C
二叉链表是二叉树的存储结构(每个节点存 lchild / rchild 指针),跟矩阵无关。把"链表"二字过度泛化为"什么都能存的链式结构",就会误选。
D
把 B 和 C 的两个错误叠加:邻接矩阵不压缩,"十字链表"虽然对,但搭配错误的"邻接矩阵"。一旦其中任何一项不属于稀疏矩阵存储,整个选项就被排除。
总解析
核心:稀疏矩阵的特征是"非零元素少",压缩存储的目标是只保留非零元,跳过 0。
逐项分析候选结构:
- 三元组表 :每个非零元用一行三元组记录"行号、列号、值";零元素彻底不存,是最直观的压缩。✓
- 十字链表:每个非零元被同时串入它所在的"行链表"和"列链表",行/列方向都能 O(行/列长度) 遍历;适合频繁修改的稀疏矩阵。✓
- 邻接矩阵:是图的稠密存储—— 二维数组,0 也占位置,不压缩。✗
- 二叉链表:二叉树节点的
lchild/rchild链接结构,跟矩阵没关系。✗
只有 三元组表 + 十字链表 两项同时满足"压缩存储 + 适用稀疏矩阵"。
最终答案是 A。