数据结构笔记

稀疏矩阵的三元组顺序表快速转置笔记

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;
}
posted @ 2019-11-21 21:07  fun-debug  阅读(220)  评论(0编辑  收藏  举报