稀疏矩阵的存储和乘法操作

一 稀疏矩阵的存储

1.三元组顺序表

三元组表示法就是在存储非零元的同时,存储该元素所对应的行下标和列下标。稀疏矩阵中的每一个非零元素由一个三元组(i,j,aij)唯一确定。矩阵中所有非零元素存放在由三元组组成的顺序表中(通常用数组)。所以三元组的逻辑结构如下:

//————稀疏矩阵的三元组表示法————//
#define MAX_SIZE 1500  //表示稀疏矩阵的非零元素的最大个数
class Triple
{
    int i,j;//表示非零元素的行下表和列下标
    int val;//非零元素的值,此处以int类型为例
};
class TSMatrix
{
    Triple data[MAX_SIZE];
    int row_num,col_num,cnt;//稀疏矩阵的行数、列数以及非零元素的个数
};

注意,此处的非零元素的三元组是以行序为主序顺序排列的。

2.行逻辑链接顺序表

行逻辑链接顺序表的实质就是在三元组顺序表的基础上加了一个数组,这个数组用于存储稀疏矩阵中每行的第一个非零元素的在三元组顺序表中的位置(此处一定要理解对,是在三元组顺序表中的位置)。所以其逻辑结构如下:

//————稀疏矩阵的行逻辑链接表示法————//
#define MAX_SIZE 1500  //表示稀疏矩阵的非零元素的最大个数
#define MAX_ROW 1500  //表示稀疏矩阵的行数的最大个数
class Triple
{
    int i,j;//表示非零元素的行下表和列下标
    int val;//非零元素的值,此处以int类型为例
};
class RLSMatrix
{
    Triple data[MAX_SIZE]; //非零元三元组表
    int rpos[MAX_ROW];//每行第一个非零元素的位置
    int row_num,col_num,cnt;//稀疏矩阵的行数、列数以及非零元素的个数
};

  

猜你喜欢

转载自www.cnblogs.com/wangkundentisy/p/9267764.html
今日推荐