欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

稀疏矩阵转置的一般方法

程序员文章站 2024-03-22 14:56:46
...

稀疏矩阵转置需要实现:

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