数据结构课程设计(矩阵的运算).docx





《数据结构课程设计(矩阵的运算).docx》由会员分享,可在线阅读,更多相关《数据结构课程设计(矩阵的运算).docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构课程设计报告题 目:专 业:班 级:学 号:姓 名: 指导教师: 时 间:一、课程设计题目及所涉及学问点设计题目是“矩阵的运算”,所涉及的学问点主要是:1、数据构造中的对于构造体的定义, 用 typedef struct 来实现,依据所设计的问题在构造体里面定义数据类型及其变量,用define 定义数组的大小,然后利用typedef 来实现对于变量的未知类型确定正确的类型。2、利用数组的形式来储存数据,在实现不同操作过程中,有的用一维构造体数组三元组挨次表来存储,有的用二维数组来储存。3、转置的过程中利用的是快速转置的方法,附设了 num 和 cpot 两个关心变量。4、矩阵的加法、减
2、法、乘法、逆运算的根本算法方式。5、通过调用每个函数,来实现每个算法的功能。二、课程设计思路及算法描述设计思路:1、 首先是对于转置的考虑,要运用快速转置的方法实现,必需用三元组挨次表来储存数据,所以在第一个构造体中存在 int 类型的行数mu列数nu以及非零元素的个数 tu;然后其次个构造体中分别有非零元素的行下标 i、列下标j和元素数值e,最终在第一个构造体中实现对其次个构造体成为数组构造体类型。2、 对于其余加法、减法、乘法和逆运算则是运用另一个构造体来实现,里面只有矩阵的行数、列数和一个二维数组用 float 来定义类型。3、 在 main 函数里面,来实现对于数据的输入操作,利用 i
3、f 语句进展选择来执行操作,利用 dowhile 语句来实现功能的循环操作。4、 分五个函数调用分别来实现转置、加法、乘法、和逆运算,每个里面都有最终输出结果的方式。10算法 1:矩阵的转置输入:mu 中存放矩阵的行数,tu 存放矩阵的列数,i 接收行下标的数值,j 接收列下标的数值,e 来存储数据。输出:转置后的矩阵。输入两行两列数据,在其次行第一列中有个数据为 12,其余都为 0,则输出的结果为第一行其次列数据为 12,其余为 0。算法 2:矩阵的加法运算输入:i 中存放矩阵的行数,j 中存放矩阵的列数,二维数组 b 中存放每个数据。输出:矩阵加完后的另一个矩阵。输入两个两行三列的矩阵,在
4、第一个矩阵里面第一行第一列有个数据 20,其余为 0, 在其次个矩阵里面第一行其次列中有个数据 30,其余为 0,则输出的结果为一个两行三列的矩阵,其中第一行第一列数据为 20,第一行其次列数据为 30,其余为 0。算法 3:矩阵的减法运算输入:i 中存放矩阵的行数,j 中存放矩阵的列数,二维数组 b 中存放每个数据。输出:矩阵相减后的另一个矩阵。输入两个两行三列的矩阵,在第一个矩阵里面第一行第一列有个数据 20,其余为 0, 在其次个矩阵里面第一行第一列中有个数据 30,其余为 0,则输出的结果为一个两行三列的矩阵,其中第一行第一列数据为-10,其余为 0。算法 4:矩阵的乘法运算输入:i
5、中存放矩阵的行数,j 中存放矩阵的列数,二维数组 b 中存放每个数据。输出:矩阵加完后的另一个矩阵。输入两行两列的矩阵,第一个矩阵里面第一行第一列有个数据 2 其次列有个数据 3, 其余为 0,在其次个矩阵里面第一行第一列有个数据 2 其次列中有个数据 3,其余为 0,则输出的结果为一个两行两列的矩阵,其中第一行第一列数据为 4,其次列为 6,第一行其次列数据为 30,其余为 0。算法五:矩阵的逆运算输入:i 中存放矩阵的行数,j 中存放矩阵的列数,二维数组 b 中存放每个数据。输出:矩阵进展逆运算完后的另一个矩阵。输入三行三列的矩阵,第一个矩阵里面第一行第一列有个数据 3 个数据分别为 1,
6、2, 3;其次行的数据分别为 2,2,1;第三行的暑假分别为 3,4,3;则输出的结果为三行三列矩阵,其中第一行的数据为 1,3,-2;其次行的数据分别为-1.5,-3,2.5; 第三行的数据分别为 1,1,-1。三、课程设计中遇到的难点及解决方法1、在转置的过程中,要求把转置后的矩阵输出出来,由于用的是三元组挨次表的存储形式,所以不知道怎么去实现,然后通过进一步思考,运用先把一个矩阵存入零元素,然后在对其进展更改,最终完成了此项的工作。2、就是对于矩阵的乘法运算和逆运算,把握的不够娴熟,先是通过书籍对于矩阵的乘法和逆运算得到更深的了解,然后通过一步步写程序最终实现了矩阵的乘法运算和逆运算。四
7、、总结通过此次课程设计,让我对于编程有了更深的生疏,教师的细心指导让我学会到了很多, 不仅仅是代码,最主要的让我的思维开阔了很多,在这个过程中,通过不断的尝试,不断的修改,最终抑制了困难,完成了自己的任务,心里有种无比的喜悦,但同时又感觉到了自己的学问面的狭隘,还有好多学问的海洋还没有畅游,等待自己将是一回更大的考验。对于现在的自己,对学习程序还是有很大的兴趣,它让我体验到了很多的欢快,我要进步跟进现在的课程,努力去进展自己,依据教师说的最主要的是具有了编程的思想,则具有了编程的力量,我想我可以成功完成自己的目标。五、附录主要源程序代码及运行结果1、主要源程序代码:# include # de
8、finemax 100# definemaxsize 100 typedef floatelemtype; typedef structfloat bmaxmax; int i;/矩阵的行数int j;/ 矩阵的列数 tsmatrix; typedef struct int i,j;/该非零元的行下标和列下标elemtype e;triple; typedef struct triple datamaxsize+1;/非零元三元组,data0未用intmu,nu,tu;/矩阵的行数、列数和非零元个数sqlist ;void zhuanzhi(sqlist s1,tsmatrix &l2)/矩阵
9、的转置sqlist s2;int col,t9,p,q,a1,b1;int num100,copt100; s2.mu=s1.mu;s2.nu=s1.nu;s2.tu=s1.tu;if(s2.tu0) for(col=1;col=s1.nu;+col) numcol=0;for(t9=1;t9=s1.tu;+t9)+nums1.datat9.j;/求 s1 中每一列含非零元个数copt1=1;/求第 col 列中第一个非零元在 s2.data 中序号for(col=2;col=s1.nu;+col) coptcol=coptcol-1+numcol-1; for(p=1;p=s1.tu;+p)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 矩阵 运算

限制150内