数据结构矩阵的相乘

上传人:re****.1 文档编号:478722791 上传时间:2024-02-17 格式:DOC 页数:5 大小:19.50KB
返回 下载 相关 举报
数据结构矩阵的相乘_第1页
第1页 / 共5页
数据结构矩阵的相乘_第2页
第2页 / 共5页
数据结构矩阵的相乘_第3页
第3页 / 共5页
数据结构矩阵的相乘_第4页
第4页 / 共5页
数据结构矩阵的相乘_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构矩阵的相乘》由会员分享,可在线阅读,更多相关《数据结构矩阵的相乘(5页珍藏版)》请在金锄头文库上搜索。

1、# 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.da

2、tai.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的三元组表中的位置。若找到返回值,若找不到返回-1

3、int 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元相乘后!=0i

4、nt 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+)/en

5、d_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

6、()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(C);/end_if(A.n=B.m) /end_else showtip(); break; case 2:exit(0);break; /end_switch/end_while/end_main

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号