资源描述:
《数据结构实验报告-特殊矩阵和稀疏矩阵.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、精品文档实验五特殊矩阵和稀疏矩阵【实验目的】1、掌握数组的结构类型(静态的内存空间配置);通过数组的引用下标转换成该数据在内存中的地址;2、掌握对称矩阵的压缩存储表示;3、掌握稀疏矩阵的压缩存储-三元组表表示,以及稀疏矩阵的转置算法。【实验学时】2学时【实验预习】回答以下问题:1、什么是对称矩阵?写出对称矩阵压缩存储sa[k]与aij之间的对应关系。2、什么是稀疏矩阵?稀疏矩阵的三元组表表示。【实验内容和要求】1、编写程序exp5_1.c,将对称矩阵进行压缩存储。(1)对称矩阵数组元素A[i][j]转换成为以行为主的一维数组sa[k],请描述k与ij的关系。(注意C程序中,i,j,k
2、均从0开始)(2)调试程序与运行。对称矩阵存储下三角部分即i>=j。对称矩阵为3,9,1,4,79,5,2,5,81,2,5,2,44,5,2,1,77,8,4,7,9参考程序如下:#include#defineN5intmain()。1欢迎下载精品文档{intupper[N][N]={{3,9,1,4,7},{9,5,2,5,8},{1,2,5,2,4},{4,5,2,1,7},{7,8,4,7,9}};/*对称矩阵*/introwMajor[15];/*存储转换数据后以行为主的数组*/intIndex;/*数组的索引值*/inti,j;printf("Twodi
3、mensionaluppertriangulararray:");for(i=0;i=j_____)/*下三角元素进行存储*/{Index=______i*(i+1)/2+j______;/*ij与index的转换*/rowMajor[Index]=upper[i][j];}printf("RowMajoronedimension
4、alarray:");for(i=0;i<15;i++)/*输出转换后的一维数组*/printf("%3d",rowMajor[i]);printf("");return1;}2、完成程序exp5_2.c,实现稀疏矩阵的三元组表存储及稀疏矩阵的转置。调试并给出结果:补充完整程序,运行稀疏矩阵的一般转置算法;完成稀疏矩阵的快速转置算法,并修改主函数的转置调用算法,验证快速转置算法的正确性。exp5_2.c部分代码如下:#include#defineMAXSIZE20/*非零元素个数最大值*/typedefintElemType;typedefstruct{in
5、ti,j;ElemTypee;}Triple;。2欢迎下载精品文档typedefstruct{Tripledata[MAXSIZE+1];/*三元组表,data[0]不用*/intmu,nu,tu;/*矩阵的行数、列数、非零元个数*/}TSMatrix;voidTransposeSMatrix(TSMatrix*T,TSMatrix*M);/*一般转置算法*/voidFastTransposeSMatrix(TSMatrix*M,TSMatrix*T);/*快速转置算法*/intmain(){//inti,j,k,q,col,p;inti,j,k;inttemp[6][7]={{0,
6、12,9,0,0,0,0},/*稀疏矩阵*/{0,0,0,0,0,0,0,},{-3,0,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=1;for(i=0;i7、astTransposeSMatrix(&M,&T);/*调用转置算法进行转置*//*输出转置结果*/printf("稀疏矩阵:");for(i=0;i