两个稀疏矩阵相加_第1页
两个稀疏矩阵相加_第2页
两个稀疏矩阵相加_第3页
两个稀疏矩阵相加_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

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

文档简介

1、#in clude<stdio.h>#in clude<stdlib.h>#defi ne Max 100typ edef structint line;/ 行int column;/ 列int nu mber;/ 非零数Node;typ edef structint Arrline;/ 行int Arrclou;/ 列int ArrNZ;/非零元素个数Node dataMax;SP A;void Inp ut(S PA *Head);void En queue(S PA *TC,i nt *tc,S PA *TB,i nt *tb);void AddTogether(

2、SPA *A,S PA *B,S PA *C); void Prin t(S PA *C);void mai n()SPA *A,*B,*C;n");n");A=(S PA *)malloc(sizeof(S PA); B=(S PA *)malloc(sizeof(S PA); C=(S PA *)malloc(sizeof(S PA); prin tf("第一个稀疏矩阵:Inp ut(A);prin tf("第二个稀疏矩阵:Inp ut(B);AddTogether(A,B,C);Prin t(C);void Inpu t(S PA *Head)in

3、t i,j;printf("输入稀疏矩阵的行数: scan f("%d",&Head->Arrli ne); printf("输入稀疏矩阵的列数: scan f("%d",&Head->Arrclou); printf("输入非零元素的个数: scan f("%d",&Head->ArrNZ); for(i=0;i<Head->ArrNZ;i+) ”);”);");printf("输入第%d个非零元素的行号: scan f(&quo

4、t;%d",&Head->datai.li ne);printf("输入第 %d个非零元素的列号: scan f("%d",&Head->datai.colum n);printf("输入第 %d个非零元素的数值: scan f("%d",&Head->datai. number);”,i+1);”,i+1);",i+1);void En queue(S PA *TC,i nt *tc,S PA *TB,i nt *tb)TC->data*tc.li ne =TB-&

5、gt;data*tb.li ne; TC->data*tc.colu mn=TB->data*tb.colu mn;TC->data*tc. nu mber=TB->data*tb .n umber; *tc=*tc+1;*tb=*tb+1;void AddTogether(SPA *A,S PA *B,S PA *C)int i=O,j=O,k=O;for(i=0;i<Max;i+)C->datai. nu mber=0;C->Arrl in e=A->Arrl ine;C->Arrclou=A->Arrclou;C->Arr

6、NZ=A->ArrNZ+B->ArrN Z;i=0;j=0;k=0;while(i<A->ArrNZ) && (j<B->ArrNZ)if(A->datai.li ne < B->dataj.li ne)/找出最小 行号En queue(C,&k,A,& i);if(A->datai.li ne = B->dataj.li ne)if(A->datai.colu mn > B->dataj.colu mn) En queue(C,&k,B,&j);if(A->

7、;datai.colu mn < B->dataj.colu mn) En queue(C,&k,A, &i);if(A->datai.colu mn = B->dataj.colu mn) En queue(C,&k,A, &i);C->datak-1. nu mber+=B->dataj+. nu mber;if(A->datai.li ne > B->dataj.li ne)En queue(C,&k,B,&j);while(i < A->ArrNZ)En queue(C,&

8、amp;k,A,&i); while(j < B->ArrNZ)En queue(C,&k,B,&j); for(i=0;i+1<C->ArrNZ;i+) if(C->datai. nu mber=0)for(j=i;j+1<C->ArrNZ;j+)C->dataj.li ne=C->dataj+1.li ne;C->dataj.colu mn=C->dataj+1.colu mn;C->dataj. nu mber=C->dataj+1. nu mber; C->ArrNZ-;i-;i

9、f(C->dataC->ArrNZ-1 .n umber=0)C->ArrNZ-;void Prin t(S PA *C)int i,j,k=0,z=0,d=0,flag;prin tf("n");prin tf("nC->Arrli ne= %d",C->Arrli ne); prin tf("nC->Arrclou= %d",C->Arrclou);prin tf("nC->ArrNZ= %dn",C->ArrNZ); for(i=1;i<=C->Arrli ne;i+)/ 行for(j=1;j<=C->Arrclou;j+)/ 列 flag=0;for(k=d;k<C->ArrN Z;k+)if( (i=C->datad.li ne) &&am

温馨提示

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

评论

0/150

提交评论