网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构--稀疏矩阵课程毕业设计.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 课程设计说明书 目  录 1 问题描述 1 2 需求分析 1 3 总体设计 2 3.1 Matrix结构的定义 2 3.2 系统流程图 3 4 详细设计 4 4.1 “菜单”界面 4 4.2 建立矩阵 4 4.3 显示矩阵 6 4.4 矩阵的转置 7 4.5 矩阵的加法运算 8 4.6 矩阵的减法运算 9 4.7 矩阵的乘法运算 9 5 程序运行 11 5.1 输入矩阵 11 5.2 矩阵转置 11 5.3 矩阵加法 12 5.4 矩阵减法 12 5.5 矩阵乘法 12 5.6 退出及错误提示 13 6 总结 13 参考文献 14 1 问题描述 题目内容:设计稀疏矩阵运算系统实现两个稀疏矩阵的加法、减法、乘法以 及转置操作。 基本要求: 存储结构选择三元组存储方式; 实现一个稀疏矩阵的转置运算; 实现两个稀疏矩阵的加法运算; 实现两个稀疏矩阵的减法运算; 实现两个稀疏矩阵的乘法运算。 设计目的:通过本次课程设计,了解稀疏矩阵的一些基本运算操作,并通过 相关的程序代码实现。 2 需求分析 经过本次的课程设计,我认为稀疏矩阵运算系统主要实现的功能如下: 建立矩阵:只有先建立了矩阵,才能够对矩阵进行运算操作,包括建立矩阵A和矩阵B; 转置运算操作:对矩阵A或者矩阵B进行转置运算,输出相应的转置矩阵; 四则运算操作:该步骤由两个矩阵同时参与,对其进行加法运算(A+B)、减法运算(A-B)以及乘法运算(A*B和B*A); 退出:当做完矩阵的运算操作之后,就可以点击它退出该界面。 在这次设计中用到了一些变量和函数,例如:void Display(Matrix M);int Max(int i,int j);Matrix Zero(Matrix M)等,下面会做进一步详细的介绍。 3 总体设计 3.1 Matrix结构的定义 struct Matrix{ int H; //矩阵的行数 int L; //矩阵的列数 int fly; //矩阵中的非零元个数 int zhi[Maxsize][Maxsize];//非零元值[所在行][所在列] }; 操作集合: Matrix Enter(Matrix M); //建立矩阵M void Display(Matrix M); //显示矩阵M void Transpose(Matrix M); //M矩阵的转置 void Add(Matrix M,Matrix N); //求和运算 A+B void Sub(Matrix M,Matrix N); //求差运算 A-B void Multi(Matrix M,Matrix N); //求积运算 A*B int Max(int i,int j); //求最大值 Matrix Zero(Matrix M); //矩阵所有元素赋值为0 3.2 系统流程图 该运算系统的系统流程图如图1所示: 图1 系统流程图 4 详细设计 4.1 “菜单”界面 进入稀疏矩阵运算系统后的“菜单”界面如图2所示。 图2 “菜单”界面 4.2 建立矩阵 矩阵在建立之后才能够进行运算操作,建立矩阵A和矩阵B,调用函数Enter(M),首先根据所输入的矩阵M的行数H和列数L,建立H*L的矩阵M,并且调用函数Zero(M)将其所有元素均赋值为0;其次再根据所输入矩阵M的非零元个数fly做循环控制变量,按提示输入非零元所在的行h和列l以及非零元的值,如果输入的行h或者列l大于矩阵M的行H或列L,则提示输入错误;最后将非零元的值保存在矩阵M中的相应位置。程序如下: Matrix Enter(Matrix M) //建立矩阵 { cout请输入矩阵的行数和列数:; cinM.HM.L; cout请输入矩阵的非零元个数:; cinM.fly; coutendl; if(M.fly(M.H*M.L)) { cout非零元个数多于矩阵元素总数,请重新输入!endl; cout请重新输入矩阵的非零元个数:; cinM.fly; } M=Zero(M); int h; int l; for(int n=1;n=M.fly;n++) //输入非零元所在的行、列和值 { cout请输入第n个非零元所在的行和列:; cinhl; if(hM.H||lM.L) // 行列输入错误提示 { cout行列输入错误,请重新输入:endl; cout请重新输入第n个非零元所在的行和列:; cinhl; } cout请输入该非零元的值:; cinM.zhi[h][l]; coutendl; } return M; } 注:该函数中调用的Zero()函数的功能为将矩阵M

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档