资源描述:
《数据结构实验报告-特殊矩阵和稀疏矩阵》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验五特殊矩阵和稀疏矩阵【实验目的】1、掌握数组的结构类型(静态的内存空间配置);通过数组的引用下标转换成该数据在闪存中的地址;2、掌握对称矩阵的压缩存储表示;3、掌握稀疏矩阵的压缩存储-三元组表表示,以及稀疏矩阵的转置算法。【实验学时】2学吋【实验预习】回答以下问题:1、什么是对称矩阵?写出对称矩阵压缩存储sa[k]与aij之间的对应关系。2、什么是稀疏矩阵?稀疏矩阵的三元组表表示。【实验内容和要求】1、编写程序exp5_l.c,将对称矩阵进行压缩存储。(1)对称矩阵数纟II元素AWLU转换成为以行为主的一维数姐salk],请描述k与ij的关系。(注
2、意C程序中,i,j,k均从0开始)(2)调试程序与运行。对称矩阵存储下三角部分即i〉=j。对称矩阵为3,9,1,4,79.5.2.5.81,2,5,244,5,2,1,77.8.4.7.9参考程序如下:#include#defineN5intmain()intupper[N][N]={{3,9,l,4,7},{9,5,2,5,8},{1,2,5,2,4},14,5,2,1,7},{W,7,9}};/*对称矩阵*/introwMajorll5J;/*存储转换数据后以行为主的数姐*/intIndex;/*数组的索引値*/inti,j;pr
3、intf("Twodimensionaluppertriangulararray:H);for(i=0;i=j)/*下三角元素进行存储*/{Index=i*(i+l)/2+j;/*ij与index的转换*/rowMajor[Index]=upper[i][j];}printf("RowMajoronedime
4、nsionalarray:");for(i=0;i<15;i++)/*输出转换后的一维数组*/printf(”%3d",rowMajor[i]);printf("");return1;}2、完成程序cxp5_2.c,实现稀疏矩阵的三元组表存储及稀疏矩阵的转置。调试并给出结果:•补充完整程序,运行稀疏矩阵的一般转置算法;•完成稀疏矩阵的快速转置算法,并修改主函数的转置调用算法,验证快速转置算法的正确性。cxp5_2.c部分代码如下:#include<$tdio.h>#defineMAXSIZE20/*非零元素个数最大值typedefintElem
5、Type;typedefstruct{inti,j;ElemTypee;[Triple;typedefstructTripledata[MAXSIZE+1J;/*三元组表,data^OJ不用intmu,nu,tu;/*炳阵的行数、列数、非零元个数*/}TSMatrix;voidTransposeSMatrix(TSMatrix*T,TSMatrix*M);/*一-般较置算法*/voidFastTransposeSMatrix(TSMatrix*M,TSMatrix*T);/*快速转置兑法*/intmain(){//inti,j,k,q,col,p;in
6、ti,j,k;inttemp[6]RJ={{0,12,9,0,0,0,0},/*稀疏矩陈5V{0,0,0,0,0,0,0,},{-3,0,0,(),0,14,0},{0,0,24,0,0,0,0},{0,18,0,0,0,0,0},{15,0,0,-7,0,0,0},};TSMatrixT,M;M.mu=6;M.nu=7;M.tu=0;k=l;for(i=0;i7、[i][jj;k++;}}}M.tu=k-1;FastTransposeSMatrix(&M,&T);/*转换为稀疏矩阵的三元组农示*//*调用转置算法进行转S*//*转换为稀疏矩阵的三元组表示*//*输出转置结果*/printf("稀疏矩阵:");for(i=0;i8、rintf("itjte");for(i=1;i<=M.tu;i++)printf