首页 [宝典]稀疏矩阵加法运算

[宝典]稀疏矩阵加法运算

举报
开通vip

[宝典]稀疏矩阵加法运算[宝典]稀疏矩阵加法运算 稀疏矩阵加法运算 //用三元组表示稀疏矩阵,并且求和 #include "Stdio.h" # define MAXSIZE 20 /*假设非零元个数的最大值为10*/ struct Triple { int i,j; /*该非零元的行下标和列下标*/ int e; }; struct TSMtrix { struct Triple data[MAXSIZE+1]; /*非零元三元组表,data[0]未用*/ int mu,nu,tu; /*矩阵的行数、列数和非零元个数*...

[宝典]稀疏矩阵加法运算
[宝典]稀疏矩阵加法运算 稀疏矩阵加法运算 //用三元组表示稀疏矩阵,并且求和 #include "Stdio.h" # define MAXSIZE 20 /*假设非零元个数的最大值为10*/ struct Triple { int i,j; /*该非零元的行下标和列下标*/ int e; }; struct TSMtrix { struct Triple data[MAXSIZE+1]; /*非零元三元组表,data[0]未用*/ int mu,nu,tu; /*矩阵的行数、列数和非零元个数*/ }; CreateMtrix(struct TSMtrix *M) { /*创建一个稀疏矩阵*/ int i,date,col,row,mu,nu,tu; printf("please input matrix col,row,unzeroed numbers:\n"); scanf("%d,%d,%d",&mu,&nu,&tu); M->mu=mu; M->nu=nu; M->tu=tu; printf("请输入行 列 值:\n"); for (i=1;i<=tu;i++) { scanf("%d,%d,%d",&col,&row,&date); if ( mu<0 || nu<0 ) { printf("error!"); } else { M->data[i].i=col; M->data[i].j=row; M->data[i].e=date; } } } int AddMtrix(struct TSMtrix A,struct TSMtrix B,struct TSMtrix *C) { int pa=1,pb=1,pc=1,x,ce; C->mu=A.mu;C->nu=A.nu;C->tu=0; for(x=0;x<=A.mu;x++) { while(A.data[pa].idata[pc].i=x; C->data[pc].j=A.data[pa].j; C->data[pc].e=ce; pa++;pb++;pc++; } else{ pa++; pb++; } } else if(A.data[pa].j>B.data[pb].j) { C->data[pc].i=x; C->data[pc].j=B.data[pb].j; C->data[pc].e=B.data[pb].e; pb++;pc++; } else { C->data[pc].i=x; C->data[pc].j=A.data[pa].j; C->data[pc].e=A.data[pa].e; pa++;pc++; } } while(A.data[pa].i==x) /* 把A中剩下的元素传给C */ { C->data[pc].i=x; C->data[pc].j=A.data[pa].j; C->data[pc].e=A.data[pa].e; pa++;pc++; } while(B.data[pb].i==x) /* 把B中剩下的元素传给C */ { C->data[pc].i=x; C->data[pc].j=B.data[pb].j; C->data[pc].e=B.data[pb].e; pb++;pc++; } } C->tu=pc; } ShowMtrix(struct TSMtrix M) { /*打印出矩阵*/ int i=1,j=1,dir=1,flag; printf("The matrix is:\n"); for (i=1;i<=M.mu;i++) { for (j=1;j<=M.nu;j++) { flag=0; for(dir=1;dir<=M.tu;dir++) if (M.data[dir].i==i && M.data[dir].j==j) /*存在非零元*/ { printf("%d ",M.data[dir].e); flag=1; } if(flag==0) printf("0 "); } printf("\n"); } } main() {struct TSMtrix M,T,P; CreateMtrix(&M); CreateMtrix(&T); ShowMtrix(M) ; ShowMtrix(T) ; if(AddMtrix(M,T,&P)==1) printf("EERROR!!"); else { AddMtrix(M,T,&P); ShowMtrix(P) ;} getch();
本文档为【[宝典]稀疏矩阵加法运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:5
分类:房地产
上传时间:2017-10-06
浏览量:20