矩阵的转置(详解).doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
矩阵的转置(详解)

//矩阵的转置(亲自调试完成): #includestdio.h #includemalloc.h//头文件 #define MAXSIZE 100 #define OK 1 typedef int ElemType; typedef struct{ int c,r;//该非零元的行下标和列下标 ElemType e;//矩阵中某个位置元素的值 }Triple; typedef struct{ Triple data[MAXSIZE]; int mu,nu,tu;//矩阵的行数、列数和非零元个数 }TSMatrix; int col,row;//稀疏矩阵的行列数,全局变量; void input(ElemType a[MAXSIZE][MAXSIZE]){ printf(please input the column of the matrix:\n); scanf(%d,col);//确定矩阵的行数 printf(please input the row of the matrix:\n); scanf(%d,row);//确定矩阵的列数 for(int i=0;irow;i++)//初始化矩阵 { for(int j=0;jcol;j++) { printf(\nplease input the data a[%d][%d]=,i,j); scanf(%d,a[i][j]); } printf(\n); } } void init(ElemType a[MAXSIZE][MAXSIZE],Triple ta[],TSMatrix *t ) { int i,j; t-tu=0;//初始化非零个数 for(i=0;irow;i++) for(j=0;jcol;j++) if(a[i][j]!=0) { ta[t-tu].c=i; ta[t-tu].r=j; ta[t-tu].e=a[i][j]; t-tu++; }//记录非零元素的位置与值 t-mu=row; t-nu=col; } void TransposeSMatrix(TSMatrix *Ma,TSMatrix *Mb,Triple ta[],Triple tb[]) { //采用三元组表存储表示,求稀疏矩阵M的转置矩阵Mb int k=0; int p,q; ElemType b[MAXSIZE][MAXSIZE]={0};//初始化用来存储最后转置好的矩阵 Mb-mu=Ma-nu;//行 Mb-nu=Ma-mu;//列 Mb-tu=Ma-tu;//非零元个数 //用于输出三元组转置后的情况 if(Ma-tu!=0) { for(int i=0;iMa-nu;i++,q++) for(int j=0;jMa-tu;j++,p++) if(ta[j].r==i) { tb[k].c=ta[j].r; tb[k].r=ta[j].c; tb[k].e=ta[j].e;//为转置好后的三元组做记录 p=tb[k].c; q=tb[k].r; b[p][q]=tb[k].e;//为转置好后的矩阵做好非零元素的位置与值的记录 k++; } } printf(the final Matrix:\n);//打印转置好后的矩阵,偷懒的做法 for(int p=0;prow;p++) { for(int q=0;qcol;q++) { printf(\t%d,b[p][q]); } printf(\n); } } void printfMatrix(ElemType a[MAXSIZE][MAXSIZE]){//用来打印矩阵的函数 for(int i=0;irow;i++) { for(int j=0;jcol;j++) { printf(\t%d,a[i][j]); } printf(\n); } } void printfTriple(Triple tb[],int k){//用来打印三元组的函数 int i; printf(\tcol\trow\tvalue\n); for(i=0;ik;i++) printf(\t%d\t%d\t%d\n,tb[i].c,tb[i].r,tb[i].e); } int main() { ElemType a[MAXSIZE][MAXSIZE],b[MAXSIZE][MAXSIZ

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档