1、 稀疏矩阵应用稀疏矩阵应用 摘 要 本课程设计主要实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并 对稀疏矩阵进行转置,相加,相乘操作,最后输出运算后的结果。在程序设计中,考虑到 方法的难易程度,采用了先用三元组实现稀疏矩阵的输入,输出,及其转置,相加,相乘 操作的方法,再在十字链表下实现。程序通过调试运行,结果与预期一样,初步实现了设 计目标。 关键词 程序设计;稀疏矩阵;三元组;十字链表 1 1 引言引言 1.1 课程设计任务 本课程设计主要实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并对稀 疏矩阵进行转置,相加,相乘操作,最后输出运算后的结果。稀疏矩阵采用三元组和十字
2、链表表示,并在两种不同的存储结构下,求两个具有相同行列数的稀疏矩阵 A 和 B 的相加 矩阵 C,并输出 C; 求出 A 的转置矩阵 D,输出 D; 求两个稀疏矩阵 A 和 B 的相乘矩阵 E, 并输出 E。 1.2 课程设计性质 数据结构课程设计是重要地实践性教学环节。 在进行了程序设计语言课和 数据结构 课程教学的基础上,设计实现相关的数据结构经典问题,有助于加深对数据结构课程的认 识。本课程设计是数据结构中的一个关于稀疏矩阵的算法的实现,包括在三元组和十字链 表下存储稀疏矩阵,并对输入的稀疏矩阵进行转置,相加,相乘等操作,最后把运算结果 输出。此课程设计要求对数组存储结构和链表存储结构非
3、常熟悉,并能熟练使用它们。 1.3 课程设计目的 其目的是让我们在学习完 C、数据结构等课程基础上,掌握多维数组的逻辑结构和存 储结构、掌握稀疏矩阵的压缩存储及转置,相加,相乘等基本操作,并用不同的方法输出 结果,进一步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、 以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开 发打好基础。 2 2 需求分析需求分析 2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值 本模块要求设计函数建立稀疏矩阵并初始化,包括在三元组结构下和十字链表结构下。 首先要定义两种不同的结构体类型,在创建稀疏矩阵时,需要
4、设计两个不同的函数分别在 三元组和十字链表下创建稀疏矩阵,在输入出现错误时,能够对错误进行判别处理,初始 化稀疏矩阵都为空值,特别注意在十字链表下,对变量进行动态的地址分配。在设计输出 稀疏矩阵的值的函数时,也要针对两种不同的情况,分别编制函数,才能准确的输出稀疏 矩阵。在对稀疏矩阵进行初始化及输出值时,均只输出非零元素的值和它所在的所在行及 所在列。 2.2 构造函数进行稀疏矩阵的转置并输出结果 本模块要求设计函数进行稀疏矩阵的转置并输出转置后的结果,由于对稀疏函数的转 置只对一个矩阵进行操作,所以实现起来难度不是很大,函数也比较容易编写。在编写函 数时,要先定义一个相应的结构体变量用于存放转置后的矩阵,最后把此矩阵输出。 2.3 构造函数进行两个稀疏矩阵相加及相乘并输出最终的稀疏矩阵 本模块要求设计相加和相乘函数对两个矩阵进行运算,并输出最终的稀疏矩阵,在进 行运算前,要对两个矩阵进行检查,看是不是相同类型的矩阵,因为两个矩阵相加要求两 个矩阵一定是同一类型的矩阵,定义相应的矩阵类型用于存放两个矩阵相加相乘后的结果 矩阵,这个结果矩阵的行数