文档介绍:《数据结构》课程设计
稀疏矩阵运算器
目录
.课程设计的目的 3
.需求分析 3
.概要设计 4
.详细设计 5
.调试分析 12
.用户手册 12
.测试结果 13
.程序清单 13
.小结 20
.参考文献 20
1. 课程设计的目的
、加强对三元组的了解和掌握,学会使用三元组的相关算法;
、掌握稀疏矩阵的压缩存储算法
、掌握矩阵的转置以及矩阵的加法、乘法等算法
、对数据结构基本理论和存储结构及算法设计有更加深入的理解;
、提高综合运用所学的理论知识和方法独立分析和解决问题的能力
2、需求分析
1) 、以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现矩阵转
置,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元
组表示,而运算结果的矩阵则以通常的阵列形式列出。
、 typedef struct // 定义三元组的结构
{ int i,j;
int v;
}triple;
class tripletable //定义描述稀疏矩阵及其操作的类
{
public:
triple data[maxsize];
int rpos[maxsize];
void convert() ;
void add( );
void multi ( );
private:
int m ;
int n ;
int t ;
int a ;
};
(3)、void tripletable二convert() 〃矩阵的转置
void tripletable::add() 〃矩阵的加法
void tripletable::multi() 〃矩阵的乘法
void main() //实现菜单选择功能
3、概要设计
4、详细设计
(1)结构设计
typedef struct //定义三元组的结构
{
int i,j;
int v;
}triple;
class tripletable 〃定义描述稀疏矩阵及其操作的类
{
public:
triple data[maxsize];
int rpos[maxsize];
void convert。;
void add();
void multi ();
private:
int m ;
int n ;
int t ;
int a ;
};
(2)、函数设计
void tripletable::convert() 〃矩阵的转置
{
int k;
tripletable A,B;
cout<<"输入稀疏矩阵A的行数,列数和非零元个数:
cin>>>>>>;
for(k=1;k<=;k++)
{
printf("输入第%d个非0元素的行数,列数和值:",k);
cin>>[k].i>>[k].j>>[k].v;
}
=;=;=;
if()
{
int q=1,col;
for(col=1;col<=;++col)
for(int p=1;p<=;++p) if([p].j==col) (
[q].i=[p].j;
[q].j=[p].i;
[q].v=[p].v;
++q; }
}
int shuru[100][100]={0};
for(k=1;k<=;k++)
{
shuru[[k].j][[k].i]=[k].v;
} cout<<"输入为:"<<endl;
for(k=1;k<=;k++)
{
for(int l=1;l<=;l++) cout<<shuru[k][l]<<" "; cout<<endl;
}
int result[100][100]={0};
for(k=1;k<=;k++)
{
result[[k].i][[k].j]=[k].v;
} cout<<"结果为:"<<endl;
for(k=1;k<=;k++)
{
for(int l=1;l<=;l++) cout<<result[k][l]<<" ";
cout<<endl;
}
}
void tripletable::add() 〃矩阵的加法
{
int k;
tripletable A,B;
cout<<"输入稀疏矩阵A的行数,列数和非零元个数:
cin>>>>>>;