欢迎来到天天文库
浏览记录
ID:39634237
大小:59.50 KB
页数:4页
时间:2019-07-07
《三元组的转置》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#defineMAXSIZE1000typedefstruct{inti,j;inte;}triple;typedefstruct{tripledata[MAXSIZE+1];intmu,nu,tu;}tsmatrix;voidcreatetsmatrix(tsmatrix*r){intk;printf("请输入矩阵的行数:");scanf("%d",&(*r).mu);printf("请输入矩阵的列数:");scanf("%d",&(*r).nu);printf("请输入矩阵的非零元个数:
2、n");scanf("%d",&(*r).tu);printf("请输入三元组表:");for(k=1;k<=(*r).tu;k++){scanf("%5d",&(*r).data[k].i);scanf("%5d",&(*r).data[k].j);scanf("%5d",&(*r).data[k].e);}}voidoutput(tsmatrix*r){intk,i,j,a[50][50];printf("输出三元组:");for(k=1;k<=(*r).tu;k++){printf("%5d",(*r).data[k].i);printf("%5d",(*
3、r).data[k].j);printf("%5d",(*r).data[k].e);printf("");}printf("矩阵:");k=1;for(i=1;i<=(*r).mu;i++){for(j=1;j<=(*r).nu;j++){if(i==(*r).data[k].i&&j==(*r).data[k].j)a[i][j]=(*r).data[k++].e;elsea[i][j]=0;printf("%5d",a[i][j]);}printf("");}}voidtrans(tsmatrix*r,tsmatrix*l){intnum[100],r
4、pos[100];intcol,t,p,q;(*l).mu=(*r).nu;(*l).nu=(*r).mu;(*l).tu=(*r).tu;if((*l).tu){for(col=1;col<=(*r).nu;col++)num[col]=0;for(t=1;t<=(*r).tu;t++)++num[(*r).data[t].j];rpos[1]=1;for(col=2;col<=(*r).nu;col++)rpos[col]=rpos[col-1]+num[col-1];}for(p=1;p<=(*r).tu;p++){col=(*r).data[p].j;q=rpo
5、s[col];(*l).data[q].i=(*r).data[p].j;(*l).data[q].j=(*r).data[p].i;(*l).data[q].e=(*r).data[p].e;++rpos[col];}}intmain(){tsmatrixT,M,*r,*l;r=&M;l=&T;r=(tsmatrix*)malloc(sizeof(tsmatrix));l=(tsmatrix*)malloc(sizeof(tsmatrix));createtsmatrix(r);output(r);trans(r,l);printf("转置后:");output(
6、l);return0;}
此文档下载收益归作者所有