1、1 页 课程设计任务书课程设计任务书 沈阳大学 稀疏矩阵的操作稀疏矩阵的操作 1. 课程设计的目的课程设计的目的 本课程设计是为了配合数据结构课程的开设,通过设计一完整的程序,使学生掌握数 据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的基本方法。 利用三元组实现稀疏矩阵的有关算法。 2. 课程设计的基本要求课程设计的基本要求 (1)要充分认识课程设计对自己的重要性,认真做好设计前的各项准备工作。 (2)既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研, 勤于实践,勇于创新。 (3)独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否
2、则成绩以不及格 计。 (4)严格遵守学校的学习和劳动纪律、规章制度,学生有事离校必须请假。课程设计期间, 无故缺席按旷课处理;缺席时间达三分之一以上者,其成绩按不及格处理。 (5)在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、 按量完成课程设计。 (6)小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队 协作精神。 3.课程设计的运行环境课程设计的运行环境 3.1 软件环境:软件环境: 操作系统:Window7 旗舰版 操作软件:TC及VC+的计算机 3.2 硬件环境:硬件环境: 处理器: Inter i3-2328M 2.20GHz
3、安装内存:4.00GB 硬盘空间:500GB 2 页 课程设计任务书课程设计任务书 沈阳大学 4. 课程设计的主要内容课程设计的主要内容 4.1 题目题目 稀疏矩阵的操作 4.2 题目的要求题目的要求 (1)稀疏矩阵采用三元组表示,求两个具有相同行列数的稀疏矩阵 A 和 B 的相加矩阵 C, 并输出 C。 (2)求出 A 的转置矩阵 D,输出 D。 4.3 存储结构设计存储结构设计 (1)以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、转置运算。 (2)稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则通常以阵列形式列出。 (3)首先应输入矩阵的行数和列数,并判别给出的两
4、个矩阵的行、列数对于所要求作的运算 是否相匹配。可设矩阵的行数和列数均不超过 20。 (4)程序可以对三元组的输入顺序加以限制,例如,按行优先。注意研究教材的算法,以便 提高计算效率。 (5)在用三元组表示稀疏矩阵时,相加或相减所得结果矩阵应该另生成,乘积矩阵也可用二 维数组存放 4.4 算法思想算法思想 (1)主函数设置循环和选择语句进行运算循环和选择,进行稀疏矩阵的加法,转置和是否继 续运算 2 个分支开关进行运算选择。 (2)设置函数分别实现稀疏矩阵的输入,输出,加法,转置。 (3)在数组结构体中设置存放每行第一个非零元在其数组存储结构单元的位置的存储单元, 若该行无非零元,则存为 0
5、4.5 模块划分模块划分 (1)typedef struct 存放各行第一个非零元在存储数组中的位置,若该行无非零元,则其 rpos 值为零 (2)createsmatrix(rlsmatrix *M) 矩阵输入函数,输入各行非零元及其在矩阵中的行列数 (3)FasttransposeRLSMatrix(RLSMatrix M,RLSMatrix *Q) 矩阵转置 (4)HeRLSMatrix(RLSMatrix *M,RLSMatrix *N,RLSMatrix *Q) 矩阵求和 3 页 课程设计任务书课程设计任务书 沈阳大学 5. 详细设计详细设计 5.1 流程图流程图 图 1 稀疏矩阵操
6、作流程图 5.2 首先定义非首先定义非零元个数的最大值和存放各行第一个非零元在存储数组中的位置零元个数的最大值和存放各行第一个非零元在存储数组中的位置 #include #define MAXSIZE 100 /* 非零元个数的最大值 */ typedef struct triple 开始 用 户 选 择 计算类型 键 入 A 和 B 键 入 A 加法运算 转置运算 显示结果 等待用户 键入 Y N 继续计算 结束运算 4 页 课程设计任务书课程设计任务书 沈阳大学 int i,j; /* 行下标,列下标 */ int e; /* 非零元素值 */ triple; typedef struct tsmatrix triple dataMAXSIZE+1; /* 非零元三元组表,data0未用 */ int mu,nu,tu; /* 矩阵的行数、列数和非零元个数 */ /* 各列第一个非零元的位置表 rpos0未用 */ rlsmatrix; 5.3 创建稀疏矩阵矩阵的行数,列数,和非零元素的个数并按行序顺序输入第创建稀