稀疏矩阵的三元组顺序表快速转置笔记
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;
}