稀疏矩阵的三元组顺序表快速转置笔记
Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T)
{
int col, t, p, q;
T.mu = M.nu;
T.nu = M.mu;
T.tu = M.tu;
if (T.tu)
{
for (col = 1; col <= M.nu; ++col)
num[col] = 0; //初始化数组num
for (t = 1; t <= M.tu; t++)
++num[M.data[t].j]; //求M中每一列含非零元的个数
cpot[1] = 1; // cpot[0]留给储存三元表行列数和非零元个数
for (col = 2; col <= M.tu; col++)
cpot[col] = cpot[col - 1] + num[col - 1];
for (p = 1; p <= M.tu; p++)
{
col = M.data[p].j; /*作用是得到循环当前项p的列数值j,赋给col,cpot[col]的值即为第col列的第一个插入位置*/
q = cpot[col];
T.data[q].i = M.data[p].j;
T.data[q].j = M.data[p].i;
T.data[q].e = M.data[p].e;
++cpot[col];
}
}
return OK;
}