稀疏矩阵转置的一般方法
程序员文章站
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;
}
}