1,数组
1.1数组的定义:一个N维数组是受N组线性关系约束的线性表
1.2二维数组:可以看成是m个行向量和n个列向量组成的向量。
逻辑特征:除边界外,每个元素恰好有两个直接前趋和两个直接后继。
1.2.1二维矩阵顺序存储方法
- 行优先顺序
将数组元素按行向量排列
Loc(a ij) = Loc(a 00) + (i*n+j)*d (d为单个元素所占单元数)
- 列优先顺序
将数组元素按列向量排列
Loc(a ij) = Loc(a 00) + (j*m+i)*d (d为单个元素所占单元数)
1.3多维数组
三维数组A mnp可视为以二维数组为数据元素的向量。四维数组可视为以三维数组为数据元素的向量。。。。。。
三维数组中的每个元素a ijk都属于三个向量。四维数组中的每个元素都属于四个向量。。。。。。。
按行优先顺序存储的三维数组A mnp地址计算公式
Loc(a ijk) = Loc(a 000) + (i*n*p+j*p+k)*d;
2,矩阵的压缩存储
压缩存储前提:非零元素呈某种规律分布或矩阵中有大量零元素。
采用压缩存储的矩阵分为两类:特殊矩阵和稀疏矩阵。
2.1特殊矩阵
特殊矩阵指的是非零元素或零元素的分布有一定规律的矩阵。对待特殊矩阵常采用一维数组存储。
- 对称矩阵
在n*n的矩阵A中,若a ij = a ji,则称其为n阶对称矩阵。
- 上(下)三角矩阵
主对角线以下元素全为0的方阵称为上三角矩阵。
主对角线以上元素全为0的方阵称为下三角矩阵。
2.2稀疏矩阵
2.2.1稀疏矩阵的定义
对于那些零元素数目远远多于非零元素数目,并且非零元素分布没有规律的矩阵称为稀疏矩阵。
2.2.2稀疏矩阵的压缩矩阵
由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法进行压缩存储。
由于非零元素的分布没有任何规律,所以在进行压缩存储的时候需要存储非零元素值的同时还要存储非零元素在矩阵中的位置,即非零元素所在的行号和列号,通常用一个三元组(i,j,a ij)表示。
(1)稀疏矩阵的顺序实现
若把稀疏矩阵的三元组线性表按顺序结构存储,则称为稀疏矩阵的三元组顺序表。
顺序表除了存储三元组外,还应该存储矩阵行数,列数和总的非零元素的数目,这样才能唯一的确定一个矩阵
- 稀疏矩阵的十字链表实现
稀疏矩阵的每一行用一个链表表示,每一列也用一个链表表示。