#define max 40 typedef struct { int row,col; int e; }syz;/*定义三元组*/ typedef struct { syz data[max]; Int m,n,num; }xz;/*定义三元组的稀疏矩阵*/ Void createxz(xz &x); /*建立稀疏矩阵函数*/ xz Transposexz(xz &a) ; /*稀疏矩阵的转置函数*/ void printfxz(xz x); /*输出稀疏矩阵函数*/ hj.cpp文件 #include<stdio.h> #include"hj.h" /*建立稀疏矩阵函数*/ void cteatexz(xz &x) { printf("请输入稀疏矩阵的行数:"); scanf("%d",&x.m); printf("请输入稀疏矩阵的列数:"); scanf("%d",&x.n); printf("请输入矩阵中非零元素的个数:"); scanf("%d",&x.num); int i; for(i=1;i<=x.num;i++) { printf("请输入第%d个元素的行号和列号及其元素的值:",i); scanf("%d %d %d",&x.data[i].row,&x.data[i].col,&x.data[i].e); } } /*稀疏矩阵的转置函数*/ xz Transposexz(xz &a) { xz b; int z,p,q; q=1; z=1; b.n=a.m; b.m=a.n; b.num=a.num; if(b.num) { for(z=1;z<=a.n;z++) for(p=1;p<=a.num;p++) { if(a.data[p].col==z) { b.data[q].col=a.data[p].row; b.data[q].row=a.data[p].col; b.data[q].e=a.data[p].e; q++; } } } return b; } /*输出稀疏矩阵函数*/ void printfxz(xz x) { int i,j; for(j=1;j<=x.num;j++) { for(i=1;i<=x.m;i++) if(x.data[j].row==i)printf("%d %d %d/n",x.data[j].row,x.data[j].col,x.data[j].e); } } main.cpp文件 #include<stdio.h> #include"hj.cpp" /*主函数*/ int main(void) { xz s,t; cteatexz(s); printf("你所输入的稀疏矩阵为:/n"); printfxz(s); t=Transposexz(s); printf("稀疏矩阵转置后为:/n"); printfxz(t); return 0; } 实验结果截图: