1、 - 0 - 数 据 结 构 课 程 设 计 说 明 书 学学 院院: 电子与计算机科学技术学院电子与计算机科学技术学院 专专 业业: 计算机科学与技术计算机科学与技术 题题 目目: 稀疏矩阵运算器稀疏矩阵运算器 指 导 教 师指 导 教 师 : 组组长姓名:长姓名: 学号学号 组员姓名组员姓名: 学号学号 组组员姓名:员姓名: 学号学号 组组员姓名:员姓名: 学号学号 - 1 - 1. 概述 1 1.1 设计目的 2 1.2 设计目标及要求设计要求 2 1.3 设计进度 2 1.4 分工 2 2. 需求分析及总体设计 3 2.1 数据结构 3 2.2 功能框架 4 3功能模块详细设计 4 3
2、.1 设计流程. 4 3.2 主要源代码. 4 4功能模块详细设计 7 4.1 设计流程. 7 4.2 主要源代码. 7 5功能模块详细设计 12 5.1 设计流程. 12 5.2 主要源代码.12 1 6功能模块详细设计 14 6.1 设计流程. 14 6.2 主要源代码14 7.总程序及结果. 18 7.1 程序. 18 7.2 结果29 2 1. 概述 1.1 设计目的 用数组及 “带行逻辑连接信息” 的三元组顺序表表示稀疏矩阵。 能够用三元组顺序表简单快捷的存取稀疏矩阵,减少存储空间, 并且将矩阵以通常的阵列形式列出。 1.2 设计目标及要求设计要求 用程序代码编写实现两个稀疏矩阵相加
3、、相减、相乘和求逆的运算,稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵 采用通常的阵列形式列出。 2. 需求分析及总体设计 2.1 数据结构 抽象数据类型稀疏矩阵的定义如下: ADT SparseMatrix 数据对象:D=aij|i=1,2,m; j=1,2,n; aijElemSet, m 和 n 分别为矩阵的行数和列数 数据关系:R=Row,Col Row=ai,j, ai,j+1| 1im, 1jn-1 Col = ai,j, ai+1,j| 1im-1, 1jn 基本操作: CreateSMatrix (RLSMatrix *M) 操作结果:创建稀疏矩阵矩阵 M PrintSM
4、atrix (RLSMatrix M) 初始条件:稀疏矩阵 TM 存在 操作结果:通常形式输出稀疏矩阵 3 Add (RLSMatrix M,RLSMatrix N,RLSMatrix *Q) 初始条件:稀疏矩阵 A,B和 C 存在 操作结果:稀疏矩阵的加法运算:C=A+B subtraction (RLSMatrix M,RLSMatrix N,RLSMatrix *Q) 初始条件:稀疏矩阵 A,B和 C 存在 操作结果:稀疏矩阵的减法运算:C=A-B MultSMatrix (RLSMatrix M,RLSMatrix N,RLSMatrix *Q) 初始条件:稀疏矩阵 A,B和 C 存在
5、 操作结果:稀疏矩阵的乘法运算:C=AB NiMatrix(RLSMatrix 2.2 功能框架 main create print Add subtraction MultSMatrix NiMatrix JsMatrix N1Matrix 3功能模块详细设计 (稀疏矩阵的创建及输出) 4 3.1 设计流程 用结构体类型定义三元顺序表 M,输入行值、列值、及元素的值,赋值于结构体 M 中 data 值以便于稀疏矩阵的压缩存储,再 输出函数时,从行开始循环,将每行每列的非零元输出,并用列阵形式表示 3.2 主要源代码 #include #include #define maxsize 100
6、/* 原稀疏矩阵中非零元个数的最大值*/ #define maxrc 100 /* 最大阶(行)数*/ #define OK 1 #define ERROR 0 typedef struct /*定义非零元的三元组*/ int i,j; /* 行下标,列下标*/ int e; /* 非零元素值*/ Triple; typedef struct /*定义稀疏矩阵的结构体*/ Triple datamaxsize+1; /* 非零元三元组表,data0未用*/ int rposmaxrc+1; /* 各行第一个非零元素的位置表*/ int mu,nu,tu; /* 矩阵的行数、列数和非零元个数*/ RLSMatrix; int CreateSMatrix (RLSMatrix *M) /* 创建稀疏矩阵M */ int i,j,k,p; 5 Triple T; printf (“请输入矩阵的行