稀疏矩阵转置的一般方法

稀疏矩阵转置需要实现:

(1)将矩阵的行列值转换;

(2)将数组元素中的行坐标i,列坐标j互换;

(3)重排转置后元素之间的次序;

(1)(2)容易实现,对于(3),将原矩阵中的元素依次按照列的次序转换目标矩阵中。

具体算法如下:

#include<iostream>

#define MAXSIZE 12500

typedef struct {
	int i, j;
	int e;
}Triple;//三维元素
typedef struct{
	Triple data[MAXSIZE + 1];
	int mu, nu, tu;  //行、列、总数
}TSMatrix;//稀疏矩阵

int TransposeSMatrix(TSMatrix M, TSMatrix &T){
	T.mu = M.nu; T.nu = M.mu; T.tu = M.tu;
	if (T.tu){
	int cnt=1;
	for (int col = 1; col < M.nu; col++){
		for (int i = 1; i < M.tu; i++){
			if (M.data[i].j == col){
				T.data[cnt].i = M.data[i].j; T.data[cnt].j = M.data[i].i;
				T.data[cnt].e = M.data[cnt].e; cnt++;}
		}
	}
	return 1;
	}
}

猜你喜欢

转载自blog.csdn.net/swordboy_fire/article/details/82845666