回 帖 发 新 帖 刷新版面

主题:转置矩阵算法里一个小问题

void FastTransposeSMatrix(TSMatrix M, TSMatrix &T) 
 {
  // 采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵 T
  T.rows = M.cols;
  T.cols = M.rows;
  T.terms = M.terms;
  if (T.terms) {
   for (col=1; col<=M. cols; ++col)
    num[col] = 0;
   for (t=1; t<=M. terms; ++t)
    ++num[M.data[t].j];      // 求 M 中每一列所含非零元的个数
   rpos[1] = 1;
   for (col=2; col<=M. cols; ++col)
    rpos[col] = rpos[col-1] + num[col-1];
              // 求T中每一行的第一个非零元在T.data中的序号
   for (p=1; p<=M.terms; ++p) {  // 转置矩阵元素
    col = M.data[p].j; q = rpos[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;
    [color=FF0000]++rpos[col]; [/color]
   } // for
  } // if
 } // FastTransposeSMatrix




请问下  ++rpos[col];  是起什么作用

回复列表 (共1个回复)

沙发


p在变q也在变,当然要++了,把M距阵的非0元素放到T里的恰到位置,先找到在T中放的位置,然后直接放进去就可以了,最后++找到下一个放的元素了

其实在书里面讲的话也很难理解,还是直接看程序更快点

我来回复

您尚未登录,请登录后再回复。点此登录或注册