这里主要论述一下稀疏矩阵的转置算法,由于稀疏矩阵指的是矩阵中30%以下的内容是非零元素,这个时候我们不需要再用mxn的数组去存储这个矩阵,这样就比较浪费存储空间了,同时在执行转置的时候算法开销也比较大,我们这个时候可以使用三元組的形式存储矩阵中的非零元素,三元组指的是用三个量来描述数组中的非零元素分别是行号,列号和数据。这样一来就可以节约存储空间。不多说了,先上代码。
#include<stdio.h>
#define MAXSIZE 1000
#define TRUE 1
#define FALSE 0
typedef int EleType;
typedef struct {
int row;
int col;
EleType e;
}Triple;
typedef struct {
Triple data[MAXSIZE+1];
int m;
int n;
int length;
}TSMatrix;
void initA (TSMatrix *A) ;
int TransposeTSMatrix (TSMatrix A , TSMatrix *B) ;
int main () {
TSMatrix A;
TSMatrix B;
int i;
initA (&A);
if (TransposeTSMatrix (A , &B)) {
for (i = 1 ; i <= A.length ; i++) {
printf ("B.data[%d].row = %d\n" , i , B.data[i].row);
printf ("B.dat