欢迎来到天天文库
浏览记录
ID:2595942
大小:70.50 KB
页数:6页
时间:2017-11-17
《稀疏矩阵的压缩存储方法及主要运算的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.实验目的:掌握稀疏矩阵的压缩存储方法及主要运算的实现。2.实验内容与要求:设计一个稀疏矩阵计算器,要求能够:⑴输入并建立稀疏矩阵;⑵输出稀疏矩阵;⑶执行两个矩阵相加;⑷执行两个矩阵相乘;⑸求一个矩阵的转置矩阵。3.数据结构设计逻辑结构:线性结构存储结构:顺序存储结构4.算法设计#include#defineMAXSIZE100typedefintdatatype;typedefstruct{inti,j;datatypev;}Triple;typedefstruct{Tripl
2、edata[MAXSIZE+1];intrpos[MAXSIZE+1];intmu,nu,tu;}RLSMatrix;intmain(){voidAddSMatrix(RLSMatrixM);voidMultSMatrix(RLSMatrixM);voidFastTransposeSMatrix(RLSMatrixM);RLSMatrixM;intk;printf("请输入稀疏矩阵M的行数、列数和非零元素个数:");scanf("%d%d%d",&M.mu,&M.nu,&M.tu);printf("
3、请输入稀疏矩阵M中非零元素的行号、列号和元素的值:");for(k=1;k<=M.tu;k++)scanf("%d%d%d",&M.data[k].i,&M.data[k].j,&M.data[k].v);printf("请输出稀疏矩阵M中非零元素的行号、列号和元素的值:");for(k=1;k<=M.tu;k++){printf("%d%3d%3d",M.data[k].i,M.data[k].j,M.data[k].v);printf("");}AddSMatrix(M);MultS
4、Matrix(M);FastTransposeSMatrix(M);return0;}voidAddSMatrix(RLSMatrixM){RLSMatrixN,R;intk,l=1,s=1;printf("请输入稀疏矩阵N的行数、列数和非零元素个数:");scanf("%d%d%d",&N.mu,&N.nu,&N.tu);printf("请输入稀疏矩阵N中非零元素的行号、列号和元素的值:");for(k=1;k<=N.tu;k++)scanf("%d%d%d",&N.data[k].i,&N.
5、data[k].j,&N.data[k].v);if(M.mu!=N.mu
6、
7、M.nu!=N.nu)printf("错误");else{R.mu=M.mu;R.nu=M.nu;k=1;if(M.tu*N.tu!=0){while(k<=M.tu&&l<=N.tu){if(M.data[k].i==N.data[l].i){if(M.data[k].j8、M.data[k].v;k++;s++;}elseif(M.data[k].j==N.data[l].j){R.data[s].i=M.data[k].i;R.data[s].j=M.data[k].j;R.data[s].v=M.data[k].v+N.data[l].v;if(R.data[s].v!=0)s++;k++;l++;}else{R.data[s].i=N.data[l].i;R.data[s].j=N.data[l].j;R.data[s].v=N.data[l].v;l++;s+9、+;}}elseif(M.data[k].i10、.j=M.data[k].j;R.data[s].v=M.data[k].v;k++;s++;}while(l<=N.tu){R.data[s].i=N.data[l].i;R.data[s].j=N.data[l].j;R.data[s].v=N.data[l].v;l++;s++;}}printf("请输出稀疏矩阵M和稀疏矩阵N的和矩阵R中非零元素的行号、列号和元素的值:");for(k=1;k
8、M.data[k].v;k++;s++;}elseif(M.data[k].j==N.data[l].j){R.data[s].i=M.data[k].i;R.data[s].j=M.data[k].j;R.data[s].v=M.data[k].v+N.data[l].v;if(R.data[s].v!=0)s++;k++;l++;}else{R.data[s].i=N.data[l].i;R.data[s].j=N.data[l].j;R.data[s].v=N.data[l].v;l++;s+
9、+;}}elseif(M.data[k].i10、.j=M.data[k].j;R.data[s].v=M.data[k].v;k++;s++;}while(l<=N.tu){R.data[s].i=N.data[l].i;R.data[s].j=N.data[l].j;R.data[s].v=N.data[l].v;l++;s++;}}printf("请输出稀疏矩阵M和稀疏矩阵N的和矩阵R中非零元素的行号、列号和元素的值:");for(k=1;k
10、.j=M.data[k].j;R.data[s].v=M.data[k].v;k++;s++;}while(l<=N.tu){R.data[s].i=N.data[l].i;R.data[s].j=N.data[l].j;R.data[s].v=N.data[l].v;l++;s++;}}printf("请输出稀疏矩阵M和稀疏矩阵N的和矩阵R中非零元素的行号、列号和元素的值:");for(k=1;k
此文档下载收益归作者所有