欢迎来到天天文库
浏览记录
ID:40978123
大小:42.50 KB
页数:5页
时间:2019-08-12
《课程设计报告封面11》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、海南大学2009—2010年度第1学期《数据结构》课程设计报告学生证号:学生姓名:分数:课程设计报告一、程序设计的目的和要求:本程序使用的得是C语言的编程,将含有多个零元素的稀疏矩阵进行压缩,以减少其存储空间,并更加简洁便利的进行存储,再利用压缩的三元组将其还原成原来的稀疏矩阵。以此来锻炼我们的实际操作能力,也能活跃我们的思维和创新能力。二、需求分析:该程序可以分为三个模块:(1)稀疏矩阵的输入模块:使用main()函数来进行输入。(2)稀疏矩阵的压缩模块:调用matrix()函数来进行矩阵的压缩,并将其所得的三元组进行输出。(3)三元组的还原模块:调用ret
2、u()函数将三元组还原成原来的稀疏矩阵,并将其进行输出。三、概要设计:第一部分:主函数main()的使用,首先定义一个数组array,利用循环将数组array进行输入。然后调用函数matrix,将稀疏矩阵进行压缩。最后调用函数retu,将稀疏矩阵进行还原。第二部分:调用函数matrix对矩阵进行压缩,首先利用if函数和循环对稀疏矩阵中的非零元素进行识别,并将其元素所在的行、列和数值分别赋给变量row、col和val。然后对压缩的三元组进行输出,并且将非零元素所在的行、列和数值保存在compress数组中。最后将矩阵的最大行数x和最大列数y分别保存在compre
3、ss数组的第一个元素和第二个元素中,将举证中非零个数n保存在compress数组的第三个元素中,为下边矩阵的还原做准备。第三部分:调用函数retu对矩阵进行还原,首先设定一个数组retu[100][100],并利用数组compress中的前两个元素的值对数组retu的最大的行和列进行限定。然后利用循环给数组retu进行赋值,将所有元素都赋值为零,并利用if函数和循环将compress数组中保存的矩阵的非零元素所在的行数和列数组retu中找到对应的行和列,将其所保存的数值赋给相应的数组retu的元素中。最后利用循环将数组retu进行还原,即为系数矩阵的还原。四、
4、详细设计:#include#include/*调用了2个库函数*/intcompress[100][3];/*定义了一个数组compress*/voidmatrix(intx,inty,intarray[100][100])/*利用函数对稀疏矩阵进行压缩*/{inti,j,row,col,val,x,y;intn=0;printf(“thecompressresultofthematrixis:”);printf("rowcolval");printf("");for(i=0;i5、++){if(array[i][j]!=0)/*利用if函数对非零数的行、列和数值进行判别*/{n++;/*计算非零的个数*/row=i;col=j;val=array[i][j];/*对三元组进行赋值*/printf("%-8d%-8d%-8d",row,col,val);/*对三元组进行输出*/compress[n][0]=i;/*将矩阵中非零元素所在行的行数保存在数组compress的第一列中*/compress[n][1]=j;/*将矩阵中非零元素所在列的列数保存在数组compress的第二列中*/compress[n][2]=array[i][j];6、/*将矩阵中的非零元素保存在compress数组的第三列中*/}printf("");}compress[0][0]=x;/*将矩阵的最大行数数值赋给compress数组的第一个元素*/compress[0][1]=y;/*将矩阵的最大列数数值赋给cimpress数组的第二个元素*/compress[0][2]=n;/*将非零个数数值赋给compress数组的第三个元素*/}voidretu(intcompress[100][3])/*利用函数对三元组进行还原*/{inti,j,m;intretu[100][100];intx,y;intn;x=compr7、ess[0][0];y=compress[0][1];n=compress[0][2];for(i=0;i8、tofthematrixis:”);f
5、++){if(array[i][j]!=0)/*利用if函数对非零数的行、列和数值进行判别*/{n++;/*计算非零的个数*/row=i;col=j;val=array[i][j];/*对三元组进行赋值*/printf("%-8d%-8d%-8d",row,col,val);/*对三元组进行输出*/compress[n][0]=i;/*将矩阵中非零元素所在行的行数保存在数组compress的第一列中*/compress[n][1]=j;/*将矩阵中非零元素所在列的列数保存在数组compress的第二列中*/compress[n][2]=array[i][j];
6、/*将矩阵中的非零元素保存在compress数组的第三列中*/}printf("");}compress[0][0]=x;/*将矩阵的最大行数数值赋给compress数组的第一个元素*/compress[0][1]=y;/*将矩阵的最大列数数值赋给cimpress数组的第二个元素*/compress[0][2]=n;/*将非零个数数值赋给compress数组的第三个元素*/}voidretu(intcompress[100][3])/*利用函数对三元组进行还原*/{inti,j,m;intretu[100][100];intx,y;intn;x=compr
7、ess[0][0];y=compress[0][1];n=compress[0][2];for(i=0;i8、tofthematrixis:”);f
8、tofthematrixis:”);f
此文档下载收益归作者所有