欢迎来到天天文库
浏览记录
ID:13624521
大小:341.75 KB
页数:25页
时间:2018-07-23
《数据结构 基于三元组表关于系数矩阵的基本操作 课程设计 实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计设计题目:基于三元组表关于稀疏矩阵的基本操作21课题名称基于三元组表关于系数矩阵的基本操作院系年级专业学号姓名成绩课题设计目的与设计意义1、课题设计目的:(1)掌握基于三元组表关于稀疏矩阵的基本操作,并通过相关的程序代码实现。(2)培养学生的编程能力、用计算机解决实际问题的能力。(3)了解软件的编制过程。2、课题设计意义:利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。大型稀疏矩阵技术的研究对解决广泛应用于计算科学、工程技术以及人文科学中的大型稀疏矩阵问题,具有重要的理论意义和实用价值。许多科学问题的计
2、算尤其是大量的实际应用问题,通常被归结为稀疏矩阵的计算。因此研究稀疏矩阵的计算具有很重要的意义。指导教师:年月日21目录一、基本概念11.1转置矩阵11.2稀疏矩阵11.3三元组表1二、需求分析12.1基本要求12.2设计环境12.3建立矩阵12.4基本运算操作12.5测试12.6退出1三、概要设计13.1程序设计思想13.2主函数模块23.3自定义子程序模块2四、详细设计34.1程序的建立34.2“菜单”界面34.3各个函数的详细设计34.3.1矩阵转置函数34.3.2矩阵相加函数44.3.3矩阵相减函数74.4退出程序9五、运行与测
3、试105.1矩阵转置105.2矩阵相加115.3矩阵相减12六、总结和心得12七、附程序源代码13八、附参考文献2221一、基本概念1.1转置矩阵若将矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵。1.2稀疏矩阵设矩阵Amn中有s个非零元素,若s远远小于矩阵元素的总数,则称A为稀疏矩阵。1.3三元组表若将表示稀疏矩阵的非零元素三元组按行优先(或者列优先)的顺序排列(跳过零元素),则得到一个其结点均是三元组的线性表。我们将该线性表的顺序存储结构称为三元组表。二、需求分析2.1基本要求(1)要求用C++语言编程,在VisualC++环
4、境下调试完成;(2)要求使用C++的结构体和自定义函数完成设计;(3)在VC++6.0环境中,学会调试程序的方法,及时查究错误,独立调试完成;(4)程序调试通过后,完成程序文档的整理。2.2设计环境(1)WINDOWS2000/7/XP系统(2)VisualC++集成开发环境2.3建立矩阵首先输入A和B矩阵的行数和列数,只有先建立了矩阵,才能够对矩阵进行运算操作。2.4基本运算操作转置运算先输入一个矩阵,再输出相应的转置矩阵。加减运算操作由两个矩阵同时参与,对其进行加法运算和减法运算。2.5测试输入数据并打印出结果。2.6退出当做完矩阵
5、的运算操作后,根据提示退出该界面。程序存储用三元组表表示,按行优先表示。在三元组表表示稀疏矩阵的运算结果矩阵另生成。三、概要设计3.1程序设计思想(1)输出存储矩阵的算法(2)存储稀疏矩阵用三元组表表示(3)稀疏矩阵的操作算法编写21(4)输出稀疏矩阵3.2主函数模块voidmain(){主要包括对子函数的调用,以及结束程序等。}3.3自定义子程序模块输入A矩阵voidcreata(spmatrix*a)输入B矩阵voidcreatb(spmatrix*a)输入需要转置的矩阵voidcreatc(spmatrix*a)输出三元组表voi
6、dprint(spmatrix*a)输出矩阵voidprintjuzhen(spmatrix*a)转置函数spmatrix*transmat(spmatrix*a)相加函数spmatrix*xiangjia(spmatrix*a,spmatrix*b)相减函数spmatrix*xiangjian(spmatrix*a,spmatrix*b)3.4具体实现流程图开始输入一个矩阵输入A矩阵输入B矩阵函数调用结束输出AB矩阵的和输出AB矩阵的差输出该矩阵的转置矩阵21四、详细设计4.1程序的建立定义相关结构类型及其他:#definesmax1
7、6typedefintdatatype;typedefstruct{inti,j;datatypev;}node;typedefstruct{intm,n,t;nodedata[smax];}spmatrix;4.2“菜单”界面进入稀疏矩阵运算系统后的“菜单”界面如下图1所示图1“菜单”界面4.3各个函数的详细设计4.3.1矩阵转置函数函数如下spmatrix*transmat(spmatrix*a){intpa,pb,col;spmatrix*b;21b=(spmatrix*)malloc(sizeof(spmatrix));b->m
8、=a->n;b->n=a->m;b->t=a->t;if(b->t>0){pb=0;for(col=0;coln;col++)for(pa=0;pat;pa++)if(a->data[pa]
此文档下载收益归作者所有