目录
一、数组
1、数组的定义
数组可以看成线性表的推广,其特点是结构中的元素本身可以具有某种结构的数据,且属于同一类型数据。
2、数组的顺序存储
由于数组不做插入、删除,一般采用顺序存储结构。
一维数组
二维数组
二维数组的行列优先表示:
注意开始位置为(0,0)。
n维数组:
3、关于二维数组的练习题
1、设有二维数组A【10】【20】,其每个元素占两个字节,A【0】【0】存储地址为100,若按行优先顺序存储,则元素A【6】【6】的存储地址为:352 ;若按列优先顺序存储,则元素A【6】【6】的存储地址为: 232
(6*20+6)*2+100=352;
(6*10+6)*2+100=232;
2、
二、矩阵的压缩存储
1、什么是压缩矩阵
若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。
2、什么样的矩阵能够压缩
一些特殊的矩阵,如:对称矩阵、三角矩阵、对角矩阵,及稀疏矩阵(矩阵中非零的个数较少,一般小于5%等)。
3、特殊矩阵的压缩存储
3.1对称矩阵
3.2三角矩阵和对角矩阵
4、稀疏矩阵的压缩存储
4.1稀疏矩阵的定义
稀疏矩阵的三元组线性表表示:
稀疏矩阵若用二维数组存储太浪费空间。
一般只考虑存储非零元素,每个非零元素可由行、列、值三元组(i,j,aij)表示,三元组按行号为主序排列,构成一个表示稀疏矩阵的三元组线性表
4.2稀疏矩阵的存储结构及运算
1、顺序存储---三元组顺序表
这里数组的指针从0开始, 而不是1; (由于不同教材的规范不同,偶尔有从1开始的情况)
2、顺序存储---行逻辑连接的顺序表
3、连接存储---带行指针向量的链接存储