1、 数 据 结 构 课 程 设 计 设计题目:基于三元组表的存储结构实现稀疏矩阵的应用 学生姓名: 专业班级: 指导教师: 完成时间: 信 息 工 程 学 院 信科 系 课程设计成绩评定表(本科) 课题名称 基于三元组表的存储结构实现稀疏矩阵的基本操作 院 系 年级专业 学 号 姓 名 成 绩 课题设计 目的与 设计意义 1、课题设计目的: (1)掌握稀疏矩阵三元组表的存储、创建、显示、转置。 (2)利用三元组表实现矩阵的相加、减。 (3)了解稀疏矩阵的相关应用。 2、课题设计意义: 本次课题设计可以使我们更熟练的掌握有关三元组表及稀疏 矩阵的相关知识,比一般存储方法节省了存储空间,基于三元组表
2、 的存储结构实现了稀疏矩阵的基本操作。 本次课程设计是本组成员共同努力而完成的,第一次进行课程 设计是我们的探索过程,这个过程中,我们克服了一个个困难,在 摸索中前行,我们相信通过此次课程设计我们每个人都会对数据结 构这门课程有更深一步的了解。 指导教师: 年 月 日 目目 录录 一、课题设计目的及意义 1 1.1、课题设计目的. 1 1.2、课程设计意义 . 1 二、需求分析. 1 2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值. 1 2.2 构造函数进行稀疏矩阵的转置并输出结果 1 2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵 1 2.4 退出系统 2 三、项目
3、设计. 2 3.1 结构设计. 2 3.2 算法思想. 2 3.3 模块图. 2 3.4 流程图. 3 四、系统实现. 4 4.1 主调函数. 4 4.2 三元组表建立. 4 4.3 矩阵建立. 4 4.4 矩阵相加减及转置. 5 五、系统调试. 8 5.1 主菜单输出. 8 5.2 矩阵相加. 9 5.3 矩阵转置. 9 5.4 矩阵相减 10 六、实验总结 10 七、附录 11 1 一、课题设计目的及意义一、课题设计目的及意义 1.1、课题设计目的 (1)掌握稀疏矩阵三元组表的存储,创建,显示,转置等方法。 (2)利用三元组表实现矩阵的相加,减。 (3)了解稀疏矩阵的相关应用。 1.2、课
4、程设计意义 本次课题设计可以使我们更熟练的掌握有关三元组表及稀疏矩阵的相关知 识,比一般存储方法节省了存储空间,基于三元组表的存储结构实现了稀疏矩阵 的基本操作。 本次课程设计是本组成员共同努力而完成的, 第一次进行课程设计是我们的 探索过程,这个过程中,我们克服了一个个困难,在摸索中前行,我们相信通过 此次课程设计我们每个人都会对数据结构这门课程有更深一步的了解。 二、需求分析二、需求分析 稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计 算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的 运算器。以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个
5、矩阵 相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的 矩阵则通常以阵列形式列出。 2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值 本模块要求设计函数建立稀疏矩阵并初始化, 包括在三元组结构下和十字链 表结构下。在创建稀疏矩阵时,需要设计两个不同的函数分别在三元组和十字链 表下创建稀疏矩阵,在输入出现错误时,能够对错误进行判别处理,初始化稀疏 矩阵都为空值。在设计输出稀疏矩阵的值的函数时,也要针对两种不同的情况, 分别编制函数,才能准确的输出稀疏矩阵。在对稀疏矩阵进行初始化时,只输入 非零元素的值和它所在的所在行及所在列。在对稀疏矩阵输出时,以矩阵的完整 形式输
6、出。 2.2 构造函数进行稀疏矩阵的转置并输出结果 本模块要求设计函数进行稀疏矩阵的转置并输出转置后的结果。 在编写函数 时, 要先定义一个相应的结构体变量用于存放转置后的矩阵, 最后把此矩阵输出。 2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵 本模块要求设计相加、减和相乘函数对两个矩阵进行运算,并输出最终的稀 疏矩阵,定义相应的矩阵类型用于存放两个矩阵操作后的结果矩阵,这个结果矩 阵的行、列数需要综合多方面情况来确定。这些函数也是整个程序的难点,需要 灵活运用数组及指针的特点。 2 2.4 退出系统 本模块要求设置选项能随时结束程序的运行,本程序中采用 do-while 循环。 程序在计算机上显示“提示信息”之后,由用户在键盘上输入演示程序中需要的 相关信息及命令。 三、项目设计三、项目设计 3.1 结构设计 1、以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵 相加、相减和相乘的运算 2、稀疏矩阵的输入形