数据结构矩阵转置.docVIP

  • 52
  • 0
  • 约3.45万字
  • 约 4页
  • 2017-06-03 发布于河南
  • 举报
数据结构矩阵转置

矩阵转置 #includeiostream #define MAXSIZE 12500 #define MAXRC 12500 #includeiomanip #define OK 1 #define ERROR 0 using namespace std; typedef int ElemType; typedef int Status; typedef struct{ int i,j; ElemType e; }Triple; typedef struct{ Triple data[MAXSIZE+1]; int rops[MAXRC+1]; int mu,nu,tu; }TSMatrix; /*Status TransposeSMatrix(TSMatrix M,TSMatrix T)//一般转置 { int p,q,col; T.mu =M.mu ;T.nu =M.nu ;T.tu =M.tu ; if(T.tu) { q=1; for(col=1;col=M.nu ;++col) { for(p=1;p=M.tu ;++p) { if(M.data [p].j==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 ;++q; } } } } return OK; }*/ Status FastTransposeSMatrix(TSMatrix M, TSMatrix T) { // 算法5.2 // 采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T int col, t, p, q; int num[20], cpot[20]; 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; for (t=1; t=M.tu; ++t) // 求 M 中每一列所含非零元的个数 ++num[M.data[t].j]; cpot[1] = 1; // 求 M 中每一列的第一个非零元在 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]; } // for } // if return OK; } // FastTransposeSMatrix int a,b; Status Creat(TSMatrix M)//创建一个矩阵并存入三元组 { int c,m,n,p=1; cout请输入矩阵元素endl; for(m=1;m=a;m++) for(n=1;n=b;n++) { cinc; if(c!=0) { M.data[p].e=c; M.data[p].i=m; M.data[p].j=n; M.tu=p; p++; } } M.mu=a; M.nu=b; return OK; } Status Putout(TSMatrix M,int x,int y)//输出矩阵 { int m,n,p=1; for(m=1;m=x;m++) { coutendl; for(n=1;n=y;n++) { if(M.data[p].i==mM.data[p].j==n) { coutsetw(5)M.data[p].e; p++; } else coutsetw(5)0; } } return OK; } void main() { TSMatrix M,T; cout请输入你创建矩阵的行数和列数endl; cina;cinb; Creat(M); cout原矩阵为e

文档评论(0)

1亿VIP精品文档

相关文档