- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计报告--稀疏矩阵运算器
闽江学院
数据结构
课程设计报告
题目: 稀疏矩阵运算器
院 系: 计算机科学系
专业班级:10计算机科学与技术(网络工程)
学 号:
学生姓名:
指导教师: 王润鸿
2011年12月23 日
目录:
1、分析问题和确定解决方案 ………………………… 3
1.1问题描述 …………………………… 3
1.2 输入的形式和输入值的范围 …………………… 3
1.3 输出的形式 ……………………………… 3
1.4 程序所能达到的功能 …………………………… 3
1.5 测试数据 ……………………………… 3
1.6 确定解决方案 ……………………………… 4
1.7所有抽象数据类型的定义 …………………………… 4
2、详细设计 …………………………… 5
2.1稀疏矩阵加法运算思路 …………………………… 5
2.2稀疏矩阵减法运算思路 ……………………………… 7
2.3稀疏矩阵乘法运算思路……………………………… 9
2.4创建稀疏矩阵 ……………………………… 11
3、系统调试与测试 …………………………… 12
3.1程序的菜单界面 ……………………………… 12
3.2 实现加法运算 ……………………………… 12
3.3 实现减法运算 ……………………………… 13
3.4实现乘法运算 ……………………………… 14
4、结果分析 …………………………………… 15
4.1、算法的时空分析 ……………………………… 15
4.2、经验和体会 ……………………………… 15
5、参考文献 ……………………………… 15
1、分析问题和确定解决方案
1.1问题描述
稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。用三元组实现稀疏矩阵的相加、相减,相乘;
1.2输入的形式和输入值的范围
以三元组的形式输入,首先应输入矩阵的行数和列数,并判别给出的两个矩阵的行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20;
例如:输入的三元组为:((1,1,10),(2,3,9),(3,1,-1))其对应的稀疏矩阵为:
1.3 输出的形式
运算结果的矩阵以通常的阵列形式输出;
1.4程序所能达到的功能
该程序可以实现以三元组形式输入两个矩阵,求出两个矩阵的和、差、积;并可根据输入的矩阵的行列数不同判别是否可以进行相加、减、乘,并重新输入正确的矩阵;
1.5测试数据
测试的数据及其结果如下:
矩阵M 矩阵N 矩阵Q
加法:
+ =
减法:
- =
乘法:
X =
1.6 确定解决方案
进入运算器界面后选择要实行的操作,按1实现矩阵相加,调用函数AddSMatrix,若输入的两个矩阵行列数不相等,则提示输入错误,重新输入矩阵进行加法运算;按2实现矩阵相乘,若输入的第一矩阵的列数不等于第二个矩阵的行数,则提示输入错误,重新输入矩阵进行乘法运算;按3实现矩阵相减,若输入的两个矩阵行列数不相等,则提示输入错误,重新输入矩阵进行减法运算;按4退出程序
以加法为例实现运算过程,如下:(稀疏矩阵的和为Q)
第一个稀疏矩阵M的三元组为((1,1,10),(2,3,9),(3,1,-1))))))?以顺序存储结构来表示三元组表,则可得到稀疏矩阵的一种压缩存储方式——三元组顺序表。
/* 稀疏矩阵的三元组顺序表存储表示 */
#define MAXSIZE 1000 //假设非零元个数的最大值为1000
typedef struct
{ int i,j; //该非零元的行下标和列下标
ElemType e; //该非零元数值
} Triple;
typedef struct
{ Triple data[MAXSIZE+1]; // 非零三元组表,data[0]未用
int mu,nu,tu; //矩阵的行数(20)、列数(20)和非零元个数
} TSMatrix;
文档评论(0)