教学单位计算机科学与技术学生学号5 数据结构课程设计报告书题目稀疏矩阵运算器学生豹专业名称软件工程指导教师志敏实验目的: 深入研究数组的存储表示和实现技术,熟悉广义表存储结构的特性。需要分析: 稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。 实现一个能进行稀疏矩阵基本运算的运算器。要求以带“行逻辑信息”的三元组顺序表存储稀疏矩阵,实现两矩阵的相加、相减、相乘等运算。输入以三元组表示,输出以通常的阵列形式列出。软件平台: Windows 2000 ,Visual C++ 6.0或 WINTC 概要设计: ADT Array { 数据对象 : D = {aij | 0≤i ≤ b1-1, 0 ≤ j ≤ b2-1} 数据关系 : R = { ROW, COL } ROW = {
| 0≤ i ≤b1-2, 0≤ j ≤ b2-1} COL = {| 0≤ i ≤b1-1, 0≤ j ≤ b2-2} 基本操作: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. } ADT Array 调试测试:初始界面矩阵的加法矩阵的减法矩阵的转置矩阵的乘法程序源码:#include #include #include #define MAXSIZE 40 //假设非零元素个数的最大值为40 #define MAXRC 20 // 假设矩阵的最大行数为20 typedef int ElemType; typedef struct { int i,j; // 非零元的行下标和列下标ElemType e; //非零元的值}Triple; typedef struct { Triple data[MAXSIZE+1]; int rpos[MAXRC+1]; //各行第一个非零元在三元组的位置表int hs,ls,fls; }TSMatrix,*Matrix; void Creat(TSMatrix &M) { int i,k; for(i=1;i<=MAXRC+1;i++) M.rpos[i]=0; printf("请输入矩阵的行数、列数和非零元个数( 以空格隔开 ):"); scanf("%d %d %d",&M.hs,&M.ls,&M.fls); for(i=1;i<=M.fls;i++) { printf...