- 20
- 0
- 约8.01千字
- 约 16页
- 2017-04-23 发布于贵州
- 举报
《数据结构》实验报告
题目要求
有输入界面(图形或文字界面都可),能区分加法、减法、乘法和转置;能处任意输入的典型数据和进行出错数据处理(例如乘法,当第一个矩阵的列数不等于第二个矩阵的行数时);必须采用三元组作存储结构,不能采用数组等形式;输出要求用矩阵的形式输出(即习题集136页的形式),当第一个矩阵的行数不等于第二个矩阵的行数时,注意如第三个乘法的形式输出
算法实现
在本次实验中,算法比较简单,所涉及的函数比较少,一共有:创建稀疏矩阵、输出稀疏矩阵、矩阵的乘法、矩阵的加法、矩阵的减法、矩阵的转置。因为是稀疏矩阵要求以三元组的方式输入,节约了很多时间和空间,只需输入行列下标和非零元即可。在输出矩阵时,通常以方阵的形式输出。
基本操作:
CreateSMatrix(M); //操作结果:创建稀疏矩阵M.
Print SMatrix(M);
//初始化条件: 稀疏矩阵M存在.
//操作结果:输出稀疏矩阵M.
AddSMatrix(M,N,Q);
//初始化条件: 稀疏矩阵M与N的行数和列数对应相等.
//操作结果:求稀疏矩阵的和Q=M+N.
SubSMatrix(M,N,Q);
//初始化条件: 稀疏矩阵M与N的行数和列数对应相等.
//操作结果:求稀疏矩阵的差Q=M-N.
MultSMatrix(M,N,Q);
//初始化条件: 稀疏矩阵M的列数等于N的行数.
//操作结果:求稀疏矩阵的乘积Q=M*N.
TransposeSMatrix(M ,Q);
//初始化条件:存在稀疏矩阵M
//操作结果:将稀疏矩阵行列互换输出。
功能模块调用关系图
主程序模块
创建稀疏矩阵模块
调用矩阵运算模块
输出矩阵方阵模块
详细设计
稀疏矩阵运算器
矩阵加法
矩阵减法
矩阵乘法
矩阵转置
输入矩阵M
输入矩阵N
输出运算结果
输入矩阵M
输入矩阵N
输出运算结果
输入矩阵M
输入矩阵N
输出运算结果
输入矩阵M
输出运算结果
1、元素类型
typedef struct{
int i,j;//该非零元素的列下标和行下标
ElemType e;
}Triple;
typedef struct{
Triple data[MAXSIZE+1];//非零元三元组表,data[0]未用
int mu,nu,tu;
}TSMatrix;
2、矩阵运算器
void AddSMatrix(M ,N , Q)
void SubSMatrix(M ,N , Q)
void MultSMatrix(M ,N , Q)
void TransposeSMatrix(M ,T)
调试分析
此程序的算法结构比较???单,只要理解了三元组,设计矩阵运算器的方法很简单。
在设计算法的过程中对于矩阵的输出有一定的困扰,三元组的输入给我们节约了时间和储存空间,但是对于把三元组的形式转化为方阵的形式输出有一定的困难。
在矩阵运算方面的算法比较简单,调试的过程中遇到的困难比较小。
由于稀疏矩阵的内容比较好理解,调用的函数也比较简单,所以此次实验的算法在设计中比较顺利。但是在刚开始设计的时候对加法和减法的把握不是很好,出现了一点错误。
用户操作说明
本实验在vc++6.0上编译
输出界面
选择需要的运算并输入矩阵三元组
输入第二个矩阵如上所示
输出运算结果
源代码
#includestdio.h
#includestring.h
#includemath.h
#define MAXSIZE 12500
typedef int ElemType;
typedef struct
{
int row,col;
ElemType e;
}Triple;
typedef struct
{
Triple data[MAXSIZE];
int m,n,t;
}TriTable;
void AddSMatrix(TriTable *A,TriTable *B,TriTable *C) //矩阵的加法
{ int i,j,k;
if(A-m!=B-m||A-n!=B-n)
{
printf(错误);
return;
}
C-m=A-m;
C-n=A-n;
C-t=0;
if(A-t==0B-t==0)
return;
i=j=k=1;
while(i=A-tj=B-t)
{
if(A-data[i].rowB-data[j].row)
{
C-data[k]=A-data[i];
i++;
k++;
}
else
{
if(A-dat
您可能关注的文档
- 衡阳市初中生德育水平量化考核细则衡阳市初中生德育水平量化考核细则.doc
- 衡阳市华新实验中学2012衡阳市华新实验中学2012.doc
- 衡阳市叉车厂安置房工程岩土勘察报告衡阳市叉车厂安置房工程岩土勘察报告.doc
- 衡阳快餐加盟品牌衡阳快餐加盟品牌.doc
- 衡阳餐饮加盟品牌衡阳餐饮加盟品牌.doc
- 衢州一中第五届教工(衢州一中第五届教工(.doc
- 衢州市实验学校2015届九年级中考一模数学试题衢州市实验学校2015届九年级中考一模数学试题.doc
- 衢州广播电视大学新生入学指南衢州广播电视大学新生入学指南.doc
- 衢州柯城区事业单位招聘:2015年衢州市柯城区属事业单位公开招聘计划表衢州柯城区事业单位招聘:2015年衢州市柯城区属事业单位公开招聘计划表.doc
- 衣服尺码详细对照表衣服尺码详细对照表.doc
- 西北师大2014考研专业目录西北师大2014考研专业目录.doc
- 西北师大2015学术研究生招生目录_31434西北师大2015学术研究生招生目录_31434.doc
- 西北师大全日制教育硕士复试分数线西北师大全日制教育硕士复试分数线.doc
- 西北师大全日制教育硕士考研参考书西北师大全日制教育硕士考研参考书.doc
- 西北师大教硕考研333教育综合复习建议西北师大教硕考研333教育综合复习建议.doc
- 西北师大附中高一物理教案第一节:行星的运动规律西北师大附中高一物理教案第一节:行星的运动规律.doc
- 西北师大附中高一物理教案:共点力作用下物体的平衡西北师大附中高一物理教案:共点力作用下物体的平衡.doc
- 西北师范大学2012年在职攻读教育硕士西北师范大学2012年在职攻读教育硕士.doc
- 西北师范大学2015年学术型硕士研究生招生专业目录西北师范大学2015年学术型硕士研究生招生专业目录.doc
- 西北师范大学全日制教育硕士考研难度分析西北师范大学全日制教育硕士考研难度分析.doc
原创力文档

文档评论(0)