1. 程式人生 > >稀疏矩陣轉置的一般方法

稀疏矩陣轉置的一般方法

稀疏矩陣轉置需要實現:

(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;
	}
}