稀疏矩阵的存储及运算。
一目的。通过课程设计,巩固和加深对特殊矩阵的压缩存储以及稀疏矩阵的三元组表示等理论知识的理解,能够熟练地运用 vc环境以及加深文件的操作;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、**实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。
二需求分析。
为了节约存储空间,稀疏矩阵通常采用压缩存储的方式。将给定的稀疏矩阵进行压缩存储,并实现矩阵的转置等运算。
功能要求及说明:
将稀疏矩阵采用行逻辑链接的顺序表进行存储,实现下列操作:
1、任意给定两个稀疏矩阵m和n,数据从文件读取,压缩存储m和n;
2、分别求m和n的转置矩阵s和t;
3、求q=m×n;
4、打印矩阵的形状;
6、采用模块化设计。
三概要设计。
1、本程序包含两个模块。
1)主函数模块:
main()
rlsmatrix m,n,q,s,t;
创建矩阵m,数据从文件中读取,并以矩阵标准形式输出矩阵m;
调用转置函数transposesmatrix(m,s)并以矩阵标准形式输出转置后的矩阵s ;
创建矩阵n,数据从文件中读取,并以矩阵标准形式输出矩阵n;
调用转置函数transposesmatrix(n,t)并以矩阵标准形式输出转置后的矩阵t;
调用乘积函数multsmatrix(m,n , q),并以矩阵标准形式输出q;
2)转置矩阵函数。
status transposesmatrix(rlsmatrix m,rlsmatrix &s)
/ 采用三元组顺序表存储表示,求稀疏矩阵m的转置矩阵t
int col, t, p, q;
int num[20], cpot[20];
= =初始化s
if ( //for
} /ifreturn ok;
3)两矩阵乘法函数。
status multsmatrix(rlsmatrix m, rlsmatrix n, rlsmatrix &q)
// 求矩阵乘积q=m*n,采用行逻辑链接存储表示。
int arow,brow,p,q,t,ctemp[max_rc],l,ccol,tp;
if ( return error;
= =0q初始化。
if ( 0)
//for arow
} /if
return ok;
4)标准形式矩阵输出函数。
void printsmatrix(rlsmatrix &m) /按矩阵形式输出m
int i,j,k=1;
triple *p=
p++;p指向第一个非零元素。
for (i=1;i<=
五调试分析。
1、程序的关键是掌握稀疏矩阵的行逻辑链接的存储结构、转置算法、求乘积算法和输出标准形式矩阵的算法。在编程的过程中,出现了很多问题,如忘了给rpos[max_rc+1]这个数组初始化时会改变m,没注意到用传引用,注意到传引用后又没注意到main()函数前的函数的全局调用,导致程序不能运行。修改后程序运行正确。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...