《实现稀疏矩阵(采用三元组表示)的基本运算实验报告.pdf》由会员分享,可在线阅读,更多相关《实现稀疏矩阵(采用三元组表示)的基本运算实验报告.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、百度文库-好好学习,天天向上-1 实现稀疏矩阵(采用三元组表示)的基本运算实验报告 一 实验题目:实现稀疏矩阵(采用三元组表示)的基本运算 二 实验要求:(1)生成如下两个稀疏矩阵的三元组 a 和 b;(上机实验指导 P92)(2)输出 a 转置矩阵的三元组;(3)输出 a+b 的三元组;(4)输出 a*b 的三元组;三 实验内容:稀疏矩阵的抽象数据类型:ADT SparseMatrix 数据对象:D=aij|i=1,2,3,.,m;j=1,2,3,n;ai,jElemSet,m 和 n 分别称为矩阵的行数和列数 数据关系:R=Row,Col Row=|1 im,1 j n-1 Col=|1i
2、m-1,1jn 基本操作:CreateSMatrix(&M)操作结果:创建稀疏矩阵 M PrintSMatrix(M)初始条件:稀疏矩阵 M 已经存在 操作结果:打印矩阵 M DestroySMatrix(&M)初始条件:稀疏矩阵 M 已经存在 操作结果:销毁矩阵 M CopySMatrix(M,&T)百度文库-好好学习,天天向上-2 初始条件:稀疏矩阵 M 已经存在 操作结果:复制矩阵 M 到 T AddSMatrix(M,N,&Q)初始条件:稀疏矩阵 M、N 已经存在 操作结果:求矩阵的和 Q=M+N SubSMatrix(M,N,&Q)初始条件:稀疏矩阵 M、N 已经存在 操作结果:求矩
3、阵的差 Q=M-N TransposeSMatrix(M,&T)初始条件:稀疏矩阵 M 已经存在 操作结果:求矩阵 M 的转置 T MultSMatrix(M,N,&Q)初始条件:稀疏矩阵 M 已经存在 操作结果:求矩阵的积 Q=M*N ADT SparseMatrix 存储结构的定义#define N 4 typedef int ElemType;#define MaxSize 100 =i;.c=j;.d=Aij;+;void DispMat(TSMatrix t)int i;if=0)百度文库-好好学习,天天向上-3 return;printf(t%dt%dt%dn,;printf(t-
4、n);for(i=0;i;i+)printf(t%dt%dt%dn,i.r,i.c,i.d);解题思路:1.转置矩阵:只要判定原矩阵有值,那么只要遍历一遍原矩阵,把原来矩阵中非 0 元素行列变换一下赋值到新的矩阵中即可。2.矩阵加法:用各种 if 判断,区分出矩阵进行加法时的可能情况,分情况处理即可。3.矩阵乘法:通过 getvalue(c,i,j)函数查找 矩阵 c 中 i 行 j 列,所储存的元素的值。然后便是模拟矩阵乘法的过程进行求解。解题过程:实验源代码如下:顺序表的各种运算#include 百度文库-好好学习,天天向上-4#define N 4 typedef int ElemTyp
5、e;#define MaxSize 100 =i;.c=j;.d=Aij;+;void DispMat(TSMatrix t)int i;if=0)return;printf(t%dt%dt%dn,;printf(t-n);for(i=0;i;i+)printf(t%dt%dt%dn,i.r,i.c,i.d);void TranMat(TSMatrix t,TSMatrix&tb)int p,q=0,v;=v)q.r=p.c;q.c=p.r;q.d=p.d;q+;bool MatAdd(TSMatrix a,TSMatrix b,TSMatrix&c)百度文库-好好学习,天天向上-5 int
6、i=0,j=0,k=0;ElemType v;if!=|!=return false;=j.r)j.c)=j.r;=j.c;k.d=j.d;k+;j+;else+j.d;if(v!=0)=i.r;k.c=i.c;k.d=v;k+;i+;j+;else if i.rj.r)=i.r;=i.c;k.d=i.d;k+;i+;else =j.r;=j.c;k.d=j.d;k+;j+;百度文库-好好学习,天天向上-6 =k;return true;int getvalue(TSMatrix c,int i,int j)int k=0;while(k&k.r!=i|k.c!=j)k+;if(k retur
7、nk.d);else return(0);bool MatMul(TSMatrix a,TSMatrix b,TSMatrix&c)int i,j,k,p=0;ElemType s;if!=i;p.c=j;p.d=s;p+;=;=;百度文库-好好学习,天天向上-7 =p;return true;int main()ElemType a1NN=1,0,3,0,0,1,0,0,0,0,1,0,0,0,1,1;ElemType b1NN=3,0,0,0,0,4,0,0,0,0,1,0,0,0,0,2;TSMatrix a,b,c;CreatMat(a,a1);CreatMat(b,b1);printf(a 的三元组:n);DispMat(a);printf(b 的三元组:n);DispMat(b);printf(a 转置为 cn);TranMat(a,c);printf(c 的三元组:n);DispMat(c);printf(c=a+bn);MatAdd(a,b,c);printf(c 的三元组:n);DispMat(c);printf(c=abn);MatMul(a,b,c);printf(c 的三元组:n);DispMat(c);return 0;百度文库-好好学习,天天向上-8 四 实验结果
限制150内