快速转置矩阵

来源:互联网 发布:iphone 手机铃声软件 编辑:程序博客网 时间:2024/05/18 01:32
#define MAXSIZE 12500   //假设非零元个数的最大值为12500typedef struct{         //该非零元的行下标和列下标    int i,j;    ElemType e;}Triple;typedef struct{    Triple data[MAXSIZE+1];     //非零元三元组表,data[0]未用    int mu,nu,tu;               //矩阵的行数、列数、和非零元}TSMatrix;Status FastTransposeSMatrix(TSMatrix M,TSMatrix &T){    //采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T    T.mu=M.mu;    T.nu=M.nu;    T.tu=M.tu;    if(T.tu)    {        for(col=1;col<=M.nu;col++)        num[col]=0;        for(t=1;t<=M.tu;t++) ++num[M.data[t].j];        cpot[1]=1;        //求第col列中第一个非零元在b.data中的序号        for(col=2;col<=M.nu;++col) cpot[col]=cpot[col-1]+num[col-1];        for(p=1;p<=M.tu;++p)        {            col=M.data[p].j;            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];        }    }} 

0 0
原创粉丝点击