当前位置:首页 > 商业/管理/HR > 商业计划书 > 数据结构-稀疏矩阵实验报告
实验报告课程数据结构实验名称实验四稀疏矩阵学号姓名实验日期:2012/11/12实验四稀疏矩阵实验目的:1.熟悉数组在计算机内存中存储的实现机制;2.熟练并掌握数组的基本运算;3.熟悉并掌握特殊矩阵的压缩存储方法及压缩存储下的矩阵的运算;3.熟悉稀疏矩阵的“三元组表”和“十字链表”存储结构。实验原理:数组的基本算法;矩阵二维下标与数组一维下标的对应关系;矩阵的运算;稀疏矩阵的“三元组表”和“十字链表”存储结构。实验内容:5-18设矩阵A、矩阵B和矩阵C为采用压缩存储方式存储的n阶上三角矩阵,矩阵元素为整数类型,要求:(1)编写实现矩阵加C=A+B的函数;(2)编写实现矩阵乘C=A×B的函数;(3)以下面的数据为测试例子,编写一个主程序进行测试。001A0426530010B04020605030实验结果:(1)实现矩阵加C=A+B的函数程序为:voidadd(inta[],intb[],intc[],intn){inti;for(i=0;i=n*(n+1)/2;i++)c[i]=a[i]+b[i];}(2)实现矩阵乘C=A×B的函数程序为:voidprod(inta[],intb[],intc[],intn){inti,j,k,p,q;intsum=0;for(i=1;i=n;i++)for(j=1;j=n;j++){if(i=j){for(k=1;k=n;k++){if(i=k)p=k*(k-1)/2+i-1;elsep=n*(n+1)/2;if(j=k)q=j*(j-1)/2+k-1;elseq=n*(n+1)/2;sum=sum+a[p]*b[q];}c[j*(j-1)/2+i-1]=sum;sum=0;}elsec[n*(n+1)/2]=0;}}(3)主程序为#includestdio.hvoidadd(inta[],intb[],intc[],intn){inti;for(i=0;i=n*(n+1)/2;i++)c[i]=a[i]+b[i];}voidprod(inta[],intb[],intc[],intn){inti,j,k,p,q;intsum=0;for(i=1;i=n;i++)for(j=1;j=n;j++){if(i=j){for(k=1;k=n;k++){if(i=k)p=k*(k-1)/2+i-1;elsep=n*(n+1)/2;if(j=k)q=j*(j-1)/2+k-1;elseq=n*(n+1)/2;sum=sum+a[p]*b[q];}c[j*(j-1)/2+i-1]=sum;sum=0;}elsec[n*(n+1)/2]=0;}}voidprint(inta[],intn){inti,j;for(i=1;i=n;i++){for(j=1;j=n;j++){if(i=j)printf(%5d,a[j*(j-1)/2+i-1]);elseprintf(%5d,a[n*(n+1)/2]);}printf(\n);}}voidmain(){intu[]={1,2,4,3,5,6,0};intv[]={10,20,40,30,50,60,0};intc[7],n=3;add(u,v,c,n);printf(C=A+B=\n);print(c,n);prod(u,v,c,n);printf(C=A*B=\n);print(c,n);printf(Thisprogramismadeby10273206\n);}运行结果为:总结与思考通过此次实验,我掌握了很多矩阵的存储方法和存储结构,熟悉了稀疏矩阵的“三元组表”和“十字链表”存储结构,以及特殊矩阵的压缩存储方法及压缩存储下的矩阵的运算。存储矩阵时,需要按行列下标的顺序存储。
本文标题:数据结构-稀疏矩阵实验报告
链接地址:https://www.777doc.com/doc-4620753 .html