稀疏矩阵加法_第1页
稀疏矩阵加法_第2页
稀疏矩阵加法_第3页
稀疏矩阵加法_第4页
稀疏矩阵加法_第5页
全文预览已结束

下载本文档

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

文档简介

1、#include<stdio.h>#include<cstdlib>#define maxsize 30typedef structint i,j;float e;haha;typedef struct heheint rows;int cols;int nums;haha datamaxsize;hehe,*friday;void createform(friday &m)m=(friday)malloc(sizeof(hehe);looop:printf("请输入矩阵的行数,列数,非零元个数: ");scanf("%d%d%d&

2、quot;,&m->rows,&m->cols,&m->nums);while(m->rows<=0|m->cols<=0|m->nums<=0|m->nums>m->cols*m->rows)printf("对不起,输入不满足要求,请重新输入: ");scanf("%d%d%d",&m->rows,&m->cols,&m->nums);if(m->nums>maxsize)printf("

3、非零元素超过最大分配空间,请重新分配元素空间");return ;printf("请输入非零元行标,列标,大小: n"); for(int l=0;l<m->nums;) scanf("%d%d%f",&m->datal.i,&m->datal.j,&m->datal.e); if(m->datal.i>m->rows|m->datal.i<1|m->datal.j>m->cols|m->datal.j<1) printf(&quo

4、t;输入的行列不合法,此次输入无效,请继续输入n"); else if(m->datal.e=0) printf("输入的必须是非零元元素,此次输入无效,请继续输入n"); else l+; int t1,t2; float t; for(int p=0;p<m->nums-1;p+) for(int q=1;q<m->nums;q+) if(m->datap.i>m->dataq.i|(m->datap.i=m->dataq.i&&m->datap.j>m->dataq

5、.j) t1=m->datap.i; m->datap.i=m->dataq.i; m->dataq.i=t1; t2=m->datap.j; m->datap.j=m->dataq.j; m->dataq.j=t2; t=m->datap.e; m->datap.e=m->dataq.e; m->dataq.e=t; for( p=0;p<m->nums-1;p+) for(int q=1;q<m->nums;q+) if(m->datap.i=m->dataq.i&&

6、m->datap.j=m->dataq.j) printf("非零元素在同一位置连续出现,矩阵构造失败,请重新构造:n"); goto looop; void matadd(friday a,friday b,friday &c)int x=0,y=0,z=0;float v;while(x<a->nums&&y<b->nums)if(a->datax.i=b->datay.i)if(a->datax.j<b->datay.j)c->dataz.i=a->datax.i;c

7、->dataz.j=a->datax.j;c->dataz.e=a->datax.e;z+;x+;elseif(a->datax.j>b->datay.j)c->dataz.i=b->datay.i;c->dataz.j=b->datay.j;c->dataz.e=b->datay.e;z+;y+;elsev=a->datax.e+b->datay.e;if(v!=0)c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e

8、=v;z+;x+;y+;elseif(a->datax.i<b->datay.i)c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e=a->datax.e;z+;x+;elsec->dataz.i=b->datay.i;c->dataz.j=b->datay.j;c->dataz.e=b->datay.e;z+;y+;if(y<b->nums) c->dataz.i=b->datay.i;c->dataz.j=b-&g

9、t;datay.j;c->dataz.e=b->datay.e; z+;y+; if(x<a->nums) c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e=a->datax.e; z+;x+;c->nums=z;c->rows=a->rows;c->cols=a->cols;return ;void print(friday m)printf("t%dt%dt%dn",m->rows,m->cols,m->

10、nums);printf("t-n");for(int o=0;o<m->nums;o+)printf("t%dt%dt%fn",m->datao.i,m->datao.j,m->datao.e);void wxinyongheng()friday a,b,c; createform(a); printf("a矩阵创建成功n");loop: createform(b); printf("b矩阵创建成功n");if(a->rows!=b->rows|a->cols!=b->cols)printf("两矩阵必须满足行列分别相等,矩阵b不满足要求,请重新构造n");goto loop;c=(friday)malloc(sizeof(hehe); matadd(a,b,c); printf("b矩阵创建成功n");printf("a矩阵的

温馨提示

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

评论

0/150

提交评论