★稀疏矩阵 ?定义:非零元较零元少,且分布没有一定规律的矩阵 必压缩存储原则:只存矩阵的行列维数和每个非零元的 行列下标及其值 0 129 0 00 0 0 0 0 0 0 0 0 -3 0 0 0 0140 M= 0 0 24 0 0 0 0 0 18 0 0 00 0 15 0 0 -70 0 06x1 M由{(1,2,12),(1,3,9),(3,1,-3),(3,6,14),(4,3,24), (5,2,18),(6,1,15),(6,4,-7)}和矩阵维数(6,7)唯一确定
15 0 0 7 0 0 0 6 7 0 18 0 0 0 0 0 0 0 24 0 0 0 0 3 0 0 0 0 14 0 0 0 0 0 0 0 0 0 12 9 0 0 0 0 − − M = M由{(1,2,12), (1,3,9), (3,1,-3), (3,6,14), (4,3,24), (5,2,18), (6,1,15), (6,4,-7) } 和矩阵维数(6,7)唯一确定 稀疏矩阵 ❖定义:非零元较零元少,且分布没有一定规律的矩阵 ❖压缩存储原则:只存矩阵的行列维数和每个非零元的 行列下标及其值
冬稀疏矩阵的压缩存储方法 0 129000 0> 0 00 000 0 ●顺序存储结构 -3 0 0 0 014 0 M= #define M20 0 024 0 00 0 ◆三元组表 typedef struct node 0 1800 00 0 行列下标 非零元值 { int ij 15 00-700 int v, JD; 0 6 7 8 JD ma[M]; 2 12 ma0].i,ma[0]j,ma[0]v分别存放 2 3 9 矩阵行列维数和非零元个数 3 1 -3 3 3 6 14 4 3 24 5 5 2 18 三元组表所需存储单元个数为3(什1) 6 其中t为非零元个数 6 1 15 7 6 4 -7 8 ma
❖稀疏矩阵的压缩存储方法 ⚫顺序存储结构 ◆三元组表 #define M 20 typedef struct node { int i,j; int v; }JD; JD ma[M]; 三元组表所需存储单元个数为3(t+1) 其中t为非零元个数 6 7 8 1 2 12 1 3 9 3 1 -3 3 6 14 4 3 24 5 2 18 6 1 15 6 4 -7 ma i j v 0 1 2 3 4 5 6 7 8 ma[0].i,ma[0].j,ma[0].v分别存放 矩阵行列维数和非零元个数 行列下标 非零元值 15 0 0 7 0 0 0 6 7 0 18 0 0 0 0 0 0 0 24 0 0 0 0 3 0 0 0 0 14 0 0 0 0 0 0 0 0 0 12 9 0 0 0 0 − − M =