肇庆学院计算机科学系实验报告.docx

上传人:p** 文档编号:385127 上传时间:2023-08-06 格式:DOCX 页数:12 大小:44.81KB
下载 相关 举报
肇庆学院计算机科学系实验报告.docx_第1页
第1页 / 共12页
肇庆学院计算机科学系实验报告.docx_第2页
第2页 / 共12页
肇庆学院计算机科学系实验报告.docx_第3页
第3页 / 共12页
肇庆学院计算机科学系实验报告.docx_第4页
第4页 / 共12页
肇庆学院计算机科学系实验报告.docx_第5页
第5页 / 共12页
肇庆学院计算机科学系实验报告.docx_第6页
第6页 / 共12页
肇庆学院计算机科学系实验报告.docx_第7页
第7页 / 共12页
肇庆学院计算机科学系实验报告.docx_第8页
第8页 / 共12页
肇庆学院计算机科学系实验报告.docx_第9页
第9页 / 共12页
肇庆学院计算机科学系实验报告.docx_第10页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《肇庆学院计算机科学系实验报告.docx》由会员分享,可在线阅读,更多相关《肇庆学院计算机科学系实验报告.docx(12页珍藏版)》请在第壹文秘上搜索。

1、肇庆学院计算机科学系专业计算机科学与技术班级03计本3班姓名美海军一学号2B课程名称数据结构学年20062007学期1/2口课程类别专业必修限选口任选口实践实验内容:实验时间:2006年10月17日实验二利用三元组表实现矩阵相1 .编写程序,实现利用三元组表进行两个稀疏矩阵相加的算法。要求:(1)随机产生两个可相加的稀疏矩阵(二维);(2)将产生的稀疏矩阵用两个三元组表的顺序存储结构存储;(3)将两稀疏矩阵相加的结果存储在第三个三元组表中。2 .沿用实验一编写的操作菜单进行上述的操作。实验目的及要求:1 .掌握稀疏矩阵的三元组表存储结构的实现2 .实现稀疏矩阵的三元组表表示下的相加算法 实验内

2、容、方法与步骤;(使用附页填写并附在本页后) 实验结果: 小结:通过本次实验,我基本掌握了稀疏矩阵的三元组表存储结构的实现并且实现了稀疏矩阵的三元组表表示下的相加算法分数:批阅老师:200年月日第页/共页肇庆学院计算机科学系实验报告(附页)/*数据结构课程实验实验二利用三元组表实现矩阵相加*/03计本3班*/樊海军2B*矩阵+矩阵=新矩阵,新矩阵-三元组表*/*5fC*SincludeincludeSincludeAincludeWefineMAXSIZE100o非零元素个数的最大值SdefinePAUSECoUt回车键继续*;()typedefstruct(introw,col;非零元素的行

3、下标和列下标inte;非零元素的值Triple;typedefstruct(TripledataMXSIZE+l;非零元素的三元组表,data0未用intmu,nu,tu;矩阵的行数、列数和非零元素个数TSMatrix;intinrow;全局变量:输入的矩阵行数intin_col;全局变量:输入的矩阵列数intna=0,nb=O,nc=0;三矩阵中非。元素个数voidCmdListO显示命令列表(printfCn*);printf请输入S运行,输入Q退出!n);printf(*n);)int*init-rray(int1)此函数网上得来动态分配一个二维数组PP内存空间,其类型为int pp,指

4、向该数组inti=0,j=0;int*pp;srand (time (O);pp=new int *inrow;for(i=0;iin row;i+)ppi= new intin_col;动态分配inrow个类型为int*的内存空间,分配的是行地址空间动态分配in_col个类型为int的内存空间,分配的是某行的数值空间for(i=0;iinrow;i+)for(j=0;j=50?0:aa-25:生成的数据若大于50则将其改为0,否则减去25,只是为了使。出现的次数多些,还有数值小些)return(pp);)TSMatrix*initT(int*ppa,intn)根据参数n指定的非。元素个数将P

5、a指向的矩阵数组转换为三元组形式(TSMatrix*pt:pt=(TSMatrlx*)malIoc(siZeof(TSMatrix);for(inti=lji=n;)两矩阵中非0元素的个数for(intj=0;jinrow;j+)for(intk=0;kdatai.row=j+l;因为两种数组表示不同:一个是从0开始,一个是从1开始pt-datai.col=k+l:pt-datai.e=ppajk;1+;)pt-mu=inrow;pt-nu=incol;pt-tu=n;return(pt);voidTSMatrixDisp(TSMatrix*pt,intn)显示三元组(printfCijdat

6、an*);printf(*n);for(inti=l;idatai.row,pt-datai.col,pt-datai.e);)printf(*%4d%4d%5dn*,pt-mu,pt-nu,pt-tu);printfCn*);voidrrayDisp(int*)根据指向数组的指针将数组用矩阵形式显示出来inti=0,j=0;for(i=0;iinrow;i+)(for(j=0;jincol;j+)printf(*%4d*,ij);printf(*n*);)voidddM(int*pa,int*pb,int*pc)矩阵相加(inti=0,j=0:for(i=0;iinrow;i+)for(j=

7、0;jin-col;j+)(pcij=paij+pbj;)voidReadCommand(char&c)(doc=getchar();While(c!三,q,&c!=Q,&c!=S&c!=s);)voidInterpret(char&c)int*pa,*pb,*pc;TSMatrix*pta,*ptb,*ptc;int12;inti=0,j=O;srand(time(0);for(i=0;i2;i+)生成随机参数1i=rand();switch(c)(case,S,:case,s,:Printfe1请输入矩阵的行数(020):n);scanf(*%d*,&in_row);while(inrow

8、20)Printf(错误!请重新输入矩阵的行数(020):n);scanf(*%d*,&in_row);)Printf(请输入矩阵的列数(020):n);scanf(*%d*,ftincol);while(incol20)PrintfC错误!请重新输入矩阵的列数(020):n);scanf(*%d*,ftincol);)Printf(新建矩阵行数:%d列数:%dn”,inrow,incol);printfn*);Printf(第一步.随机产生可相加的两个矩阵nn);PrintfC随机建立数组矩阵An*);pa=init_Array(I0);传入一个int型以随机得到矩阵AArrayDispCp

9、a);PAUSE:printf随机建立数组矩阵BnO;pb=init_Array(ll);传入一个int型以随机得到矩阵BArrayDispCpb);PAUSE;PrintfC建立初值为0的数组矩阵Cn*);pc=init-rray(0)/传入一个int型以随机得到矩阵BArrayDisp(pc);PAUSE:printfn*);Printf(第二步.用三元组表存储矩阵nn);na=nb=nc=O;非O元素个数置0,否则下次运行时将累加而出现错误!for(i=0;iin_row;i+)两矩阵中非。元素的个数for(j=0;jin-col;j+)(if(paij!=0)na+;if(pbij!=

10、O)nb+;pta=initT(pa,na);ptb=initT(pb,nb);ptc=initT(pc,nc);printf(*n*);printf(*矩阵A的三元组表示:n*);TSMatrixDisp(pta,na);printf(*n*);PAUSE;printf(*矩阵B的三元组表示:n*);TSMatrixDisp(ptb,nb);printf(*n*);PAUSE;printf矩阵C的三元组表示:n);TSMatrixDisp(ptc,nc);printf(*n*);PAUSE;printf(*n*);Printf(第三步.矩阵相加,结果存储在新的三元组表中nn);PrintfC

11、相加后结果矩阵Cn*);AddM(pa,pblpc);ArrayDisp(pc);PAUSE;printf相加后结果矩阵C的三元组表示:n);for(i=0;iin_row;i+)结果矩阵C中非。元素的个数for(j=0;jin_col;j+)if(pcij!=0)nc+;ptc=init_T(pc,nc);TSMatrixDisp(ptc,nc);printfCn*);PAUSE;CmdListO;break;case,Q,:case,q,:Printfe程序结束,按任意键退出!n);)voidmain()主函数(charcmd;system(cis);printf(*n*):Printfc

12、实验二利用三元组表实现矩阵相加n);printf(*03计本3班n);Printf(樊海军2Bn*);printf(*n*):printf本程序实现利用三元组表进行两个稀疏矩阵相加的算法。n);printf(,=CmdListO;doReadCommand(cmd);Interpret(cmd);)whi1e(cmd!=,q,&cmd!=,Q,);实眸三利用三元组表实现矩阵相加03让本3班樊海军2B0324151138*XXX本程序实现利用三元组表进行两个稀疏矩阵相加的算法。请输入S运行,输入Q退出?请输入矩阵的行数(。一20:10请输入矩阵的列数02。:翳建矩阵行数:10列数门5第一步.随机产生可相加的两个矩阵随机建立数组矩阵A00-1705-1200-12160022017020-212010-15-25001000-18714170-16-13-1008000第三步.矩阵相加,结果存储在新的三元组表中相加后结果矩阵C000-14-255-290-9-229-921

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 实验设计

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!