数据结构课程设计--稀疏矩阵的操作.docxVIP

数据结构课程设计--稀疏矩阵的操作.docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计--稀疏矩阵的操作

稀疏矩阵的操作课程设计的目的本课程设计是为了配合《数据结构》课程的开设,通过设计一完整的程序,使学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的基本方法。利用三元组实现稀疏矩阵的有关算法。2. 课程设计的基本要求(1)要充分认识课程设计对自己的重要性,认真做好设计前的各项准备工作。(2)既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。(3)独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。(4)严格遵守学校的学习和劳动纪律、规章制度,学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达三分之一以上者,其成绩按不及格处理。(5)在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。(6)小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。3.课程设计的运行环境3.1 软件环境:操作系统:Window7旗舰版操作软件:TC及VC++的计算机3.2 硬件环境:处理器:Inter i3-2328M 2.20GHz安装内存:4.00GB硬盘空间:500GB4. 课程设计的主要内容4.1 题目稀疏矩阵的操作4.2 题目的要求(1)稀疏矩阵采用三元组表示,求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C。(2)求出A的转置矩阵D,输出D。4.3 存储结构设计(1)以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、转置运算。(2)稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则通常以阵列形式列出。(3)首先应输入矩阵的行数和列数,并判别给出的两个矩阵的行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。(4)程序可以对三元组的输入顺序加以限制,例如,按行优先。注意研究教材的算法,以便提高计算效率。(5)在用三元组表示稀疏矩阵时,相加或相减所得结果矩阵应该另生成,乘积矩阵也可用二维数组存放4.4 算法思想(1)主函数设置循环和选择语句进行运算循环和选择,进行稀疏矩阵的加法,转置和是否继续运算2个分支开关进行运算选择。(2)设置函数分别实现稀疏矩阵的输入,输出,加法,转置。(3)在数组结构体中设置存放每行第一个非零元在其数组存储结构单元的位置的存储单元,若该行无非零元,则存为04.5 模块划分(1)typedefstruct存放各行第一个非零元在存储数组中的位置,若该行无非零元,则其rpos[]值为零(2)createsmatrix(rlsmatrix *M) 矩阵输入函数,输入各行非零元及其在矩阵中的行列数(3)FasttransposeRLSMatrix(RLSMatrix M,RLSMatrix *Q) 矩阵转置(4)HeRLSMatrix(RLSMatrix *M,RLSMatrix *N,RLSMatrix *Q) 矩阵求和5. 详细设计5.1流程图图1 稀疏矩阵操作流程图5.2 首先定义非零元个数的最大值和存放各行第一个非零元在存储数组中的位置#includestdio.h #define MAXSIZE 100 /* 非零元个数的最大值 */ typedefstruct triple { inti,j; /* 行下标,列下标 */ int e; /* 非零元素值 */ }triple; typedefstructtsmatrix{ triple data[MAXSIZE+1]; /* 非零元三元组表,data[0]未用 */ intmu,nu,tu; /* 矩阵的行数、列数和非零元个数 */ /* 各列第一个非零元的位置表rpos[0]未用 */ }rlsmatrix; 5.3创建稀疏矩阵矩阵的行数,列数,和非零元素的个数并按行序顺序输入第%d个非零元素所在的行(1~%d),列(1~%d),元素值。createsmatrix(rlsmatrix *M) { /* 创建稀疏矩阵M */ int e,i,m,n; M-data[0].i=0; /* 为以下比较顺序做准备 */ printf(请输入矩阵的行数,列数,和非零元素的个数:); scanf(%d,M-mu);scanf(%d,M-nu);scanf(%d,M-tu); for(i=1;i=M-tu;i++) { printf(请按行序顺序输入第%d个非零元素所在的行(1~%d),列(1~%d),元素值:,i,M-mu,M-nu); scanf(%d,m);scanf(%d,n);scanf(%d,e); if(m1||mM-mu||n1||nM-nu) /*行或列超出范围 */ {printf(行或列超出范围);getch()

文档评论(0)

sanshengyuan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档