首页 > 代码库 > 稀疏矩阵的转置运算

稀疏矩阵的转置运算

  (1)设m*n 矩阵中有t 个非零元素且t远小于m*n,这样的矩阵称为稀疏矩阵。很多科学管理及工程计算中,常会遇到阶数很高的大型稀疏矩阵。如果按常规分配方法,顺序分配在计算机内,那将是相当浪费内存的。为此提出另外一种存储方法,仅仅存放非零元素。但对于这类矩阵,通常零元素分布没有规律,为了能找到相应的元素,所以仅存储非零元素的值是不够的,还要记下它所在的行和列。于是采取如下方法:将非零元素所在的行、列以及它的值构成一个三元组(i,j,v),然后再按某种规律存储这些三元组,这种方法可以节约存储空间。

  将三元组按行优先的顺序,同一行中列号从小到大的规律排列成一个线性表,称为三元组表,采用顺序存储方法存储该表。如下图:

技术分享

 

 可以将其改写成如下的三元组的形式,同时存储器行、列和值,如下:

i

j

v

1

2

12

1

3

9

3

1

-3

3

6

14

4

3

24

5

2

18

6

1

15

6

4

-7

 

对应的三元组的数据结构可以写成如下形式的数据结构:

//定义三元组的数据结构类型typedef struct{	int i,j;		//非零元素的行和列	ElemType e;		//非零元素的值}Triple;//三元组表的存储类型typedef struct{	int mu,nu,tu;				//矩阵的行、列以及非零元的个数	Triple data[MAXSIZE+1];	    //三元组表}Matrix;

 (2)、矩阵的转置

要做到转置要做到三点

①、将矩阵的行列值互换

②、将每个三元组的i、j互换

③、重新排列三元组

如下图:

  技术分享

方法一:

  ①、将矩阵A的行列转化为矩阵B的列和行

  ②、一次遍历三元组的每一列的值

  

稀疏矩阵的转置运算