系数矩阵乘法和加法的实现.doc

系数矩阵乘法和加法的实现.doc

ID:57644896

大小:38.50 KB

页数:6页

时间:2020-08-30

系数矩阵乘法和加法的实现.doc_第1页
系数矩阵乘法和加法的实现.doc_第2页
系数矩阵乘法和加法的实现.doc_第3页
系数矩阵乘法和加法的实现.doc_第4页
系数矩阵乘法和加法的实现.doc_第5页
资源描述:

《系数矩阵乘法和加法的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include"stdio.h"#include"stdlib.h"#include"malloc.h"#defineMAXSIZE1000typedefstruct{inte;//非零元素的值inti,j;//该非零元素的行下标、列下标}Triple;/*三元组类型定义*/typedefstruct{Tripledata[MAXSIZE+1];intmu,nu,tu;}TSMatrix;/*三元组顺序表类型定义*/voidInitTSM(TSMatrix*M);//函数声明voidShowTSM(TSMatrixM);//显示稀疏矩阵voidAdd_Matrix(TSMatrix

2、a,TSMatrixb,TSMatrix*c);//实现稀疏矩阵的加法voidMultsmatrix(TSMatrixM,TSMatrixN,TSMatrix*T);//实现稀疏矩阵的乘法voidInitTSM(TSMatrix*M)//初始化数组元素{inte,m,n,t,i;printf("请输入矩阵行数,列数,非零元素的个数:");scanf("%d%d%d",&m,&n,&t);M->mu=m;M->nu=n;M->tu=t;for(i=1;i<=t;i++){printf("请输入元素所在行,列,值:");scanf("%d%d%d",&m,&n,&e);if(m<=0

3、

4、

5、n<=0

6、

7、m>M->mu

8、

9、n>M->nu){printf("inputerror!");i--;}else{M->data[i].i=m;M->data[i].j=n;M->data[i].e=e;}}}voidShowTSM(TSMatrixM)//显示数组元素{intm,n,i,t=1;printf("则矩阵为:");for(i=1;i<=M.nu;i++)printf("%dt",i);printf("");printf("*********************************************************");for(m

10、=1;m<=M.mu;m++){for(n=1;n<=M.nu;n++){if(M.data[t].i==m&&M.data[t].j==n){printf("%dt",M.data[t].e);t++;}elseprintf("0t");}printf("");}}voidAdd_Matrix(TSMatrixa,TSMatrixb,TSMatrix*c)//矩阵加法{inti=1,j=1,k=1;//下标置初始值while(i<=a.tu&&j<=b.tu){if(a.data[i].i==b.data[j].i)//a的行号等于b的行号{if(a.data[i].j==

11、b.data[j].j)//a的列号等于b的列号{c->data[k].i=a.data[i].i;c->data[k].j=a.data[i].j;c->data[k].e=a.data[i].e+b.data[j].e;//此时将他们的数据直接相加i++;j++;k++;}elseif(a.data[i].jdata[k].i=a.data[i].i;c->data[k].j=a.data[i].j;c->data[k].e=a.data[i].e;//如果行号相等,则相加后的值等于列号更小的矩阵中对应元素的值i++;k+

12、+;}elseif(a.data[i].j>b.data[j].j)//a的列号大于b的列号{c->data[k].i=b.data[j].i;c->data[k].j=b.data[j].j;c->data[k].e=b.data[j].e;//如果行号相等,则相加后的值等于列号更小的矩阵中对应元素的值j++;k++;}}elseif(a.data[i].idata[k].i=a.data[i].i;c->data[k].j=a.data[i].j;c->data[k].e=a.data[i].e;//如果列号相等,则相加后

13、的值等于行号更小的矩阵中对应元素的值i++;k++;}elseif(a.data[i].i>b.data[j].i)//a的行号大于b的行号{c->data[k].i=b.data[j].i;c->data[k].j=b.data[j].j;c->data[k].e=b.data[j].e;//如果列号相等,则相加后的值等于行号更小的矩阵中对应元素的值j++;k++;}}while(i<=a.tu){c->data[k].e=a.data[i].e;c->

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。