三元组实现稀疏矩阵加减乘资料

三元组实现稀疏矩阵加减乘资料

ID:40716080

大小:54.50 KB

页数:17页

时间:2019-08-06

三元组实现稀疏矩阵加减乘资料_第1页
三元组实现稀疏矩阵加减乘资料_第2页
三元组实现稀疏矩阵加减乘资料_第3页
三元组实现稀疏矩阵加减乘资料_第4页
三元组实现稀疏矩阵加减乘资料_第5页
资源描述:

《三元组实现稀疏矩阵加减乘资料》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、#include#include#defineMAXSIZE12500//三元组结构typedefstruct{inti,j;//矩阵行下标和列下标inte;//值}Triple;//矩阵结构typedefstruct{Tripledata[MAXSIZE+1];intrpos[MAXSIZE+1];//这是存放各行第一非零元在矩阵中的位置intmu,nu,tu;//矩阵的行数、列数、非零元个数}Matrix;voidInit(Matrix*M);voidAdd(Matrix*M,Matrix*T,Matrix*G);voidJian

2、(Matrix*M,Matrix*T,Matrix*G);voidCheng(Matrix*M,Matrix*T,Matrix*G);voidCheng(Matrix*M,Matrix*T,Matrix*G);voidPrintMatrix(Matrix*M);//2、初始化矩阵voidInit(Matrix*M){inti;if(M->mu<1

3、

4、M->nu<1

5、

6、M->tu>M->mu*M->nu){printf("出错!");//如果矩阵的行数、列数不符合要求,打印出错}for(i=1;i<=M->tu;i++)//data[0]不用{printf("第%d个非

7、零元的行号:",i);//以下为数据初始化scanf("%d",&M->data[i].i);printf("第%d个非零元的列号:",i);scanf("%d",&M->data[i].j);printf("第%d个非零元的元素值:",i);scanf("%d",&M->data[i].e);}printf("");printf("您创建的矩阵如下:");PrintMatrix(M);}//3、矩阵相加voidAdd(Matrix*M,Matrix*T,Matrix*G){G->mu=M->mu;//因为加减运算必须维数相等,所以M、T行、列数相等,初始化第三方

8、矩阵的行、列数。G->nu=M->nu;G->tu=0;intg,m,t;//g、m、t分别记录三个矩阵的元素的存储位置g=m=t=1;//从data[1]开始intk;intsum;//和if(M->mu!=T->mu

9、

10、M->nu!=T->nu){printf("维数不等!");}for(k=1;k<=M->mu;k++){//行下标和下标相等的对应元素相加/**********************开始**************************/if(M->data[m].i==k&&T->data[t].i==k)//行下标相等时{if(M->da

11、ta[m].j==T->data[t].j)//列下标相等时{sum=M->data[m].e+T->data[t].e;//矩阵向加if(sum!=0)//相加不为零时{G->data[g].i=k;G->data[g].j=M->data[m].j;G->data[g].e=sum;G->tu++;g++;m++;t++;}else//矩阵相加为零时,不做存储操作{m++;t++;}}}/**********************结束**************************///行下标和下标不等的元素直接插入到G的相应位置/***************

12、*******开始**************************/while(M->data[m].i==k)//插入M剩余的元素{G->data[g].i=k;G->data[g].j=M->data[m].j;G->data[g].e=M->data[m].e;G->tu++;m++;g++;}while(T->data[t].i==k)//插入T剩余的元素{G->data[g].i=k;G->data[g].j=T->data[t].j;G->data[g].e=T->data[t].e;G->tu++;t++;g++;}//G->tu=g;//记录运算完成后

13、,第三方矩阵非零元的个数/***********************结束*************************/}printf("");printf("相加后的矩阵如下:");PrintMatrix(G);}//4、矩阵相减voidJian(Matrix*M,Matrix*T,Matrix*G){G->mu=M->mu;G->nu=M->nu;G->tu=0;intsum,k;intm,t,g;m=t=g=1;if(M->mu!=T->mu

14、

15、M->nu!=T->nu){printf("维数不等!"

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

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

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