特殊矩阵的压缩存储(C语言)
Posted bfhonor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特殊矩阵的压缩存储(C语言)相关的知识,希望对你有一定的参考价值。
一、一维数组的存储结构
- 各数组元素大小相同,且物理上连续存放。
数组元素a[i] 的存放地址 = LOC + i * sizeof(ElemType) (0≤i<10)
- 注:除非题目特别说明,否则数组下标默认从0开始
二、二维数组的存储结构
- M行N列的二维数组 b[ M ][ N ] 中,若按行优先存储,则
b[ i ][ j ] 的存储地址 = LOC + ( i*N + j ) * sizeof(ElemType)
- M行N列的二维数组 b[M][N] 中,若按列优先存储,则
b[i][j] 的存储地址 = LOC + ( j*M+ i ) * sizeof(ElemType)
三、普通矩阵的存储
- 可用二维数组存储
- 注意:描述矩阵元素时,行、列号通常从 1 开始;而描述数组时通常下标从0开始(具体看题目给的条件,注意审题!)
- 某些特殊矩阵可以压缩存储空间
(一)对称矩阵的压缩存储
-
若 n 阶方阵中任意一个元素 ai,j都有ai,j = aj,i则该矩阵为对称矩阵
-
普通存储:n*n 二维数组
-
压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区)
-
思考:
①数组大小应为多少?
②站在程序员的角度,对称矩阵压缩存储后怎样才能方便使用?
① (1+n)*n/2
②可以实现一个“映射”函数矩阵下标à一维数组下标
(二)三角矩阵的压缩存储
- 下三角矩阵:除了主对角线和下三角区,其余的元素都相同
- 上三角矩阵:除了主对角线和上三角区,其余的元素都相同
(三)三对角矩阵的压缩存储
(四)稀疏矩阵的压缩存储
以上是关于特殊矩阵的压缩存储(C语言)的主要内容,如果未能解决你的问题,请参考以下文章
C/C++语言数据结构快速入门(代码解析+内容解析)特殊矩阵
c语言根据以下描述编写一个程序使其能完成对稀疏矩阵的压缩与还原,即给定稀疏矩阵可以压缩存储一个三元组