数据结构矩阵的相乘.doc_第1页
数据结构矩阵的相乘.doc_第2页
数据结构矩阵的相乘.doc_第3页
数据结构矩阵的相乘.doc_第4页
数据结构矩阵的相乘.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

# include # define MAXSIZE 20using namespace std; typedef struct/三元组的定义int row;/非0元的行下标int col;/非0元的列下标int e;/非0元的素值Triple;typedef struct/矩阵的定义Triple dataMAXSIZE;/非0元三元组表int m,n,len;/矩阵的行数,列数和非0元个数TSMatrix;void initMatrix(TSMatrix &A)/矩阵初始化函数,参数类型为矩阵A.len=0;A.m=0;A.n=0;for (int i=0; iMAXSIZE;i+)A.datai.col=0;A.datai.e=0;A.datai.row=0;void createMatrix(TSMatrix &A)/创建矩阵函数,创建三元组顺序表表示的矩阵initMatrix(A);cout创建矩阵:;coutA.mA.nA.len;/输入矩阵的行、列值及非0元的个数for(int i=0;iA.len;i+)/循环输入非0元的值cout请输入第: i+1 A.datai.row;cinA.datai.col;cinA.datai.e;int search(TSMatrix A,int m,int n)/找到m行n列元素在A的三元组表中的位置。若找到返回值,若找不到返回-1int flag=-1;for(int i=0;iMAXSIZE;i+)if(A.datai.row=m&A.datai.col=n)/找到了第m行第n列的元素的位置flag=i;/将此元素位置值赋给flagbreak;return flag;void mult(TSMatrix A,TSMatrix B,TSMatrix &C)/矩阵相乘函数int i=0;int j=0;if (A.n=B.m)C.m=A.m;C.n=B.n;for(i=0;iA.len;i+)for(j=0;jB.len;j+)if(A.datai.col=B.dataj.row)/此条件保证俩矩阵的非0元相乘后!=0int flag=search(C, A.datai.row, B.dataj.col) ; /调用搜索函数找到row行和col列在c的顺序表中的位置if(flag=-1)C.dataC.len.col=B.dataj.col;C.dataC.len.row=A.datai.row;C.dataC.len+.e=B.dataj.e*A.datai.e;/end_if(flag=-1)elseC.dataflag.e=C.dataflag.e+A.datai.e*B.dataj.e;/end_if(A.datai.col=B.dataj.row)/end_for(j=0;jB.len;j+)/end_for(i=0;iA.len;i+)/end_if (A.n=B.m)elsecout矩阵不能相乘!endl;/end_multvoid print(TSMatrix A)int k=0,i,j;int MMAXSIZEMAXSIZE;for (i=0;iA.m;i+)for(j=0;jA.n;j+)Mij=0;while(kA.len)MA.datak.row-1A.datak.col-1=A.datak.e;k+;for(i=0;iA.m;i+)/以列表形式输出矩阵cout| ;/控制打印格式for(j=0;jA.n;j+)coutMij ;cout|endl;void showtip()cout-please choose the case-endl;coutendl;cout 0-found matrixendl;cout 1-A * Bendl;cout 2- exitendl;cout-i;while(true)int i;cini;switch(i)case 0: system(cls); cout创建矩阵A:endl; createMatrix(A);/调用创建函数 cout创建矩阵B:endl; createMatrix(B); showtip();/调用菜单函数 break; case 1: system(cls); if(A.m=0|B.m=0) cout未创建矩阵endl; else initMatrix(C);/调用矩阵初始化函数mult(A,B,C);/调用矩阵相称函数if(A.n=B.m)cout乘后的结果:endl;print(A);cout*endl;print(B);cout=endl;print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论