欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:5545382       资源大小:44.81KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    肇庆学院计算机科学系专业计算机科学与技术班级03计本3班姓名美海军一学号2B课程名称数据结构学年20062007学期1/2口课程类别专业必修限选口任选口实践实验内容:实验时间:2006年10月17日实验二利用三元组表实现矩阵相1 .编写程序,实现利用三元组表进行两个稀疏矩阵相加的算法。要求:(1)随机产生两个可相加的稀疏矩阵(二维);(2)将产生的稀疏矩阵用两个三元组表的顺序存储结构存储;(3)将两稀疏矩阵相加的结果存储在第三个三元组表中。2 .沿用实验一编写的操作菜单进行上述的操作。实验目的及要求:1 .掌握稀疏矩阵的三元组表存储结构的实现2 .实现稀疏矩阵的三元组表表示下的相加算法 实验内容、方法与步骤;(使用附页填写并附在本页后) 实验结果: 小结:通过本次实验,我基本掌握了稀疏矩阵的三元组表存储结构的实现并且实现了稀疏矩阵的三元组表表示下的相加算法分数:批阅老师:200年月日第页/共页肇庆学院计算机科学系实验报告(附页)/*数据结构课程实验实验二利用三元组表实现矩阵相加*/03计本3班*/樊海军2B*矩阵+矩阵=新矩阵,新矩阵-三元组表*/*5fC*Sinclude<stdio.h>include<stdlib.h>Sinclude<iostream,h>Ainclude<time.h>WefineMAXSIZE100o非零元素个数的最大值SdefinePAUSECoUt回车键继续*;()typedefstruct(introw,col;非零元素的行下标和列下标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,指向该数组inti=0,j=0;int*pp;srand (time (O);pp=new int *inrow;for(i=0;i<in row;i+)ppi= new intin_col;动态分配inrow个类型为int*的内存空间,分配的是行地址空间动态分配in_col个类型为int的内存空间,分配的是某行的数值空间for(i=0;i<inrow;i+)for(j=0;j<incol;j+)(if(I=O)参数为0,则全置0,为第三个矩阵初值(ppij=;else(intaa=rand()*l%100;ppij=aa>=50?0:aa-25:生成的数据若大于50则将其改为0,否则减去25,只是为了使。出现的次数多些,还有数值小些)return(pp);)TSMatrix*initT(int*ppa,intn)根据参数n指定的非。元素个数将Pa指向的矩阵数组转换为三元组形式(TSMatrix*pt:pt=(TSMatrlx*)malIoc(siZeof(TSMatrix);for(inti=lji<=n;)两矩阵中非0元素的个数for(intj=0;j<inrow;j+)for(intk=0;k<in_col;k+)(if(ppajk!=0)(pt->datai.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)显示三元组(printfCijdatan*);printf(*n");for(inti=l;i<=n;i+)(printf(*%4d%4d%5dn*,pt->datai.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;i<inrow;i+)(for(j=0;j<incol;j+)printf(*%4d*,ij);printf(*n*);)voidddM(int*pa,int*pb,int*pc)矩阵相加(inti=0,j=0:for(i=0;i<inrow;i+)for(j=0;j<in-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;i<2;i+)生成随机参数1i=rand();switch(c)(case,S,:case,s,:Printfe1请输入矩阵的行数(020):n");scanf(*%d*,&in_row);while(inrow<=0inrow>20)Printf("错误!请重新输入矩阵的行数(020):n");scanf(*%d*,&in_row);)Printf("请输入矩阵的列数(020):n");scanf(*%d*,ftincol);while(incol<=0in_col>20)PrintfC错误!请重新输入矩阵的列数(020):n");scanf(*%d*,ftincol);)Printf("新建矩阵行数:%d列数:%dn”,inrow,incol);printfn*);Printf("第一步.随机产生可相加的两个矩阵nn");PrintfC随机建立数组矩阵An*);pa=init_Array(I0);传入一个int型以随机得到矩阵AArrayDispCpa);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;i<in_row;i+)两矩阵中非。元素的个数for(j=0;j<in-col;j+)(if(paij!=0)na+;if(pbij!=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相加后结果矩阵Cn*);AddM(pa,pblpc);ArrayDisp(pc);PAUSE;printf相加后结果矩阵C的三元组表示:n");for(i=0;i<in_row;i+)结果矩阵C中非。元素的个数for(j=0;j<in_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实验二利用三元组表实现矩阵相加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-9210000-293-10-1-52330-13-32000-971619-6301070-211021-2120-91823-422909261-15011221619-1819-51102-11110-150-130-13-220-11712101177-9-13-186-1301923-11309714-21-19200-11-341613-42-10-25-160-38-930-9281111-16-50-3130-1501934153-21113-1023-17回车键继续相加后结果矩阵C的三元组表示:ijdata14-1415-2516517-2919-9110-211129112-9113211151724-2925326-128-129-586-1187-3488168913810-42811-1813-25814-16815-2292-3893-994396-9972898119911910-16911-5913-31914391511102-151041910534106151073108-2109111010131011-11013231014-171015116分数:批阅老师:200年月日第10页/共10页

    注意事项

    本文(肇庆学院计算机科学系实验报告.docx)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开