稀疏矩陣轉置的一般方法
阿新 • • 發佈:2018-12-11
稀疏矩陣轉置需要實現:
(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; } }