数据结构_基于三元组表的储存结构实现稀疏矩阵操作_课程设计_实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、系统调试.............................................................................................................. 15 5.1 系统输入........................................................................................................ 15 5.2 矩阵转置........................................................................................................ 16 5.4 矩阵相减........................................................................................................ 17
本模块要求设计函数进行稀疏矩阵的转置并输出转置后的结果。在编写函 数时,要先定义一个相应的结构体变量用于存放转置后的矩阵,最后把此矩阵输 出。
1
2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵
本模块要求设计相加、减和相乘函数对两个矩阵进行运算,并输出最终的稀疏 矩阵,定义相应的矩阵类型用于存放两个矩阵操作后的结果矩阵,这个结果矩阵 的行、列数需要综合多方面情况来确定。这些函数也是整个程序的难点,需要灵 活运用数组及指针的特点。
四、系统实现................................................................................................................ 6 4.1 主调函数.......................................................................................................... 6 4.2 三元组表的建立.............................................................................................. 6 4.3 矩阵的建立...................................................................................................... 7 4.4 矩阵相加减及转置........................................................................................ 10
3
1.2 实验意义 空非零元素分布没有规律,在存储非零元素的同时还要存储辅助信息,才能
确定非零元素的位置,利用稀疏矩阵大大节省存储空间。
二、需求分析
2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值 本模块要求设计函数建立稀疏矩阵并初始化,包括在三元组结构下和
十字链表结构下。在创建稀疏矩阵时,需要设计两个不同的函数分别在三元组和 十字链表下创建稀疏矩阵,在输入出现错误时,能够对错误进行判别处理,初始 化稀疏矩阵都为空值。在设计输出稀疏矩阵的值的函数时,也要针对两种不同的 情况,分别编制函数,才能准确的输出稀疏矩阵。在对稀疏矩阵进行初始化时, 只输入非零元素的值和它所在的所在行及所在列。在对稀疏矩阵输出时,以矩阵 的完整形式输出。 2.2 构造函数进行稀疏矩阵的转置并输出结果
7.1 参考文献......................................................................................................... 18
一、实验目的及意义
1.1 实验目的 1.11 了解多维数组存储方式和存储特点。 1.12 熟悉稀疏矩阵的存储方式。 1.13 用三元组法实现稀疏矩阵的转置、相加、相减的操作。
020
003
003
定义两个数组 A 和 B,用于存储矩阵 a 和矩阵 b 的值;定义一个数组 C,用于存
放数组 A 和数组 B 相加后的结果。
2) 实现方式 稀疏矩阵的存储比较浪费空间,所以我们可以定义两个数组 A、B,
采用压缩存储的方式来对上面的两个矩阵进行存储。具体的方法是,将非零元素
的值和它所在的行号、列号作为一个结点存放在一起,这就唯一确定一个非零元
数据结构课程设计 本课程设计已调试通过,请放心使用。请到:道客巴 巴或豆丁网充值购买 word 版,省打字,直接修改即可,价 格较便宜,在这里百度较贵! 搜索:数据结构_基于三元组表的储存结构实现稀疏矩阵操 作_课程设计_实验报告
设计题目:基于三元组表的储存结构实现稀疏矩阵操作
课题名称 院系 学号
2
素的三元组(i、j、v)。将表示稀疏矩阵的非零元素的三元组按行优先的顺序排 列,则得到一个其结点均为三元组的线性表。即:以一维数组顺序存放非零元素 的行号、列号和数值,行号-1 作为结束标志。例如,上面的矩阵 a,利用数组 A 存储后内容为: A[0]=0,A[1]=2, A[2]=3, A[3]=1, A[4]=6, A[5]=5, A[6]=3, A[7]=4, A[8]=7, A[9]=5, A[10]=1, A[11]=9, A[12]=-1 同理,用数组 B 存储 矩阵 b 的值。 稀疏矩阵的加法实现: 3、主要算法结构分析: 1)void CreateMatrix(int A[m][n],int B[50]),这是一个将稀疏矩阵转存的函数,类似于顺序存储三元组 表。在这个方法中,只要用一个二重循环来判断每个矩阵元素是否为零,若不为 零,则将其行、列下标及其值存入到一维数组 B 中对应的元素。在定义函数的过 程中,我们需要定义一个 for 循环,以完成行和列的转换及存储。在函数的末尾 我们定义一个 B[K]=-1,用于结束非零元素的存储。 2)void MatrixAdd(int A[max],int B[max],int C[max]),这个函数用于实现数组 A 和数组 B 的相加,并 将其相加的结果存入数组 C。这个函数讨论了数组在相加的过程中的几种情况: a、A 数组和 B 数组的行相等且列相等,两者直接相加后存入数组 C 中。
2.4 退出系统
本模块要求设置选项能随时结束程序的运行,本程序中采用 do-while 循 环。程序在计算机上显示“提示信息”之后,由用户在键盘上输入演示程序中需 要的相关信息及命令。
三、项目设计
3.1 设计思路及方案
3.11 设计思路
1) 主界面的设计
定义两个矩阵 a= 1 0 0
b=1 0 4
023
基于三元组表的储存结构实现稀疏矩阵的基本操作
姓名
年级专业 成绩
Fra Baidu bibliotek
1、课题设计目的:其目的是让我们在学习完 C、数据结构等课 程基础上,掌握多维数组的逻辑结构和存储结构、掌握稀疏矩阵的 压缩存储及转置,相加,相减等基本操作,并用不同的方法输出结 果,进一步掌握设计、实现较大系统的完整过程,包括系统分析、 编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、 设计、实现以及操作方法,为进一步的应用开发打好基础。 课题设计
六、实验总结.............................................................................................................. 18 七、附录...................................................................................................................... 18
三、项目设计................................................................................................................ 2 3.1 设计思路及方案............................................................................................. 2 3.11 设计思路........................................................................................................ 2 3.2 模块图.............................................................................................................. 4 3.3 流程图............................................................................................................. 5
目的与 2、课题设计意义:让我们更加熟悉算法,提高我们的动手能力,熟
设计意义 练的掌握算法的运行与程序的实际。领会程序设计的意义。
指导教师: 年月 日
1
目录
一、实验目的及意义.................................................................................................... 1 1.1 实验目的.......................................................................................................... 1 1.11 了解多维数组存储方式和存储特点。................................................. 1 1.12 熟悉稀疏矩阵的存储方式。................................................................. 1 1.13 用三元组法实现稀疏矩阵的转置、相加、相减的操作。................. 1 1.2 实验意义......................................................................................................... 1
二、需求分析................................................................................................................ 1 2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值.......................... 1 2.2 构造函数进行稀疏矩阵的转置并输出结果................................................. 1 2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵............. 2 2.4 退出系统.......................................................................................................... 2
本模块要求设计函数进行稀疏矩阵的转置并输出转置后的结果。在编写函 数时,要先定义一个相应的结构体变量用于存放转置后的矩阵,最后把此矩阵输 出。
1
2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵
本模块要求设计相加、减和相乘函数对两个矩阵进行运算,并输出最终的稀疏 矩阵,定义相应的矩阵类型用于存放两个矩阵操作后的结果矩阵,这个结果矩阵 的行、列数需要综合多方面情况来确定。这些函数也是整个程序的难点,需要灵 活运用数组及指针的特点。
四、系统实现................................................................................................................ 6 4.1 主调函数.......................................................................................................... 6 4.2 三元组表的建立.............................................................................................. 6 4.3 矩阵的建立...................................................................................................... 7 4.4 矩阵相加减及转置........................................................................................ 10
3
1.2 实验意义 空非零元素分布没有规律,在存储非零元素的同时还要存储辅助信息,才能
确定非零元素的位置,利用稀疏矩阵大大节省存储空间。
二、需求分析
2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值 本模块要求设计函数建立稀疏矩阵并初始化,包括在三元组结构下和
十字链表结构下。在创建稀疏矩阵时,需要设计两个不同的函数分别在三元组和 十字链表下创建稀疏矩阵,在输入出现错误时,能够对错误进行判别处理,初始 化稀疏矩阵都为空值。在设计输出稀疏矩阵的值的函数时,也要针对两种不同的 情况,分别编制函数,才能准确的输出稀疏矩阵。在对稀疏矩阵进行初始化时, 只输入非零元素的值和它所在的所在行及所在列。在对稀疏矩阵输出时,以矩阵 的完整形式输出。 2.2 构造函数进行稀疏矩阵的转置并输出结果
7.1 参考文献......................................................................................................... 18
一、实验目的及意义
1.1 实验目的 1.11 了解多维数组存储方式和存储特点。 1.12 熟悉稀疏矩阵的存储方式。 1.13 用三元组法实现稀疏矩阵的转置、相加、相减的操作。
020
003
003
定义两个数组 A 和 B,用于存储矩阵 a 和矩阵 b 的值;定义一个数组 C,用于存
放数组 A 和数组 B 相加后的结果。
2) 实现方式 稀疏矩阵的存储比较浪费空间,所以我们可以定义两个数组 A、B,
采用压缩存储的方式来对上面的两个矩阵进行存储。具体的方法是,将非零元素
的值和它所在的行号、列号作为一个结点存放在一起,这就唯一确定一个非零元
数据结构课程设计 本课程设计已调试通过,请放心使用。请到:道客巴 巴或豆丁网充值购买 word 版,省打字,直接修改即可,价 格较便宜,在这里百度较贵! 搜索:数据结构_基于三元组表的储存结构实现稀疏矩阵操 作_课程设计_实验报告
设计题目:基于三元组表的储存结构实现稀疏矩阵操作
课题名称 院系 学号
2
素的三元组(i、j、v)。将表示稀疏矩阵的非零元素的三元组按行优先的顺序排 列,则得到一个其结点均为三元组的线性表。即:以一维数组顺序存放非零元素 的行号、列号和数值,行号-1 作为结束标志。例如,上面的矩阵 a,利用数组 A 存储后内容为: A[0]=0,A[1]=2, A[2]=3, A[3]=1, A[4]=6, A[5]=5, A[6]=3, A[7]=4, A[8]=7, A[9]=5, A[10]=1, A[11]=9, A[12]=-1 同理,用数组 B 存储 矩阵 b 的值。 稀疏矩阵的加法实现: 3、主要算法结构分析: 1)void CreateMatrix(int A[m][n],int B[50]),这是一个将稀疏矩阵转存的函数,类似于顺序存储三元组 表。在这个方法中,只要用一个二重循环来判断每个矩阵元素是否为零,若不为 零,则将其行、列下标及其值存入到一维数组 B 中对应的元素。在定义函数的过 程中,我们需要定义一个 for 循环,以完成行和列的转换及存储。在函数的末尾 我们定义一个 B[K]=-1,用于结束非零元素的存储。 2)void MatrixAdd(int A[max],int B[max],int C[max]),这个函数用于实现数组 A 和数组 B 的相加,并 将其相加的结果存入数组 C。这个函数讨论了数组在相加的过程中的几种情况: a、A 数组和 B 数组的行相等且列相等,两者直接相加后存入数组 C 中。
2.4 退出系统
本模块要求设置选项能随时结束程序的运行,本程序中采用 do-while 循 环。程序在计算机上显示“提示信息”之后,由用户在键盘上输入演示程序中需 要的相关信息及命令。
三、项目设计
3.1 设计思路及方案
3.11 设计思路
1) 主界面的设计
定义两个矩阵 a= 1 0 0
b=1 0 4
023
基于三元组表的储存结构实现稀疏矩阵的基本操作
姓名
年级专业 成绩
Fra Baidu bibliotek
1、课题设计目的:其目的是让我们在学习完 C、数据结构等课 程基础上,掌握多维数组的逻辑结构和存储结构、掌握稀疏矩阵的 压缩存储及转置,相加,相减等基本操作,并用不同的方法输出结 果,进一步掌握设计、实现较大系统的完整过程,包括系统分析、 编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、 设计、实现以及操作方法,为进一步的应用开发打好基础。 课题设计
六、实验总结.............................................................................................................. 18 七、附录...................................................................................................................... 18
三、项目设计................................................................................................................ 2 3.1 设计思路及方案............................................................................................. 2 3.11 设计思路........................................................................................................ 2 3.2 模块图.............................................................................................................. 4 3.3 流程图............................................................................................................. 5
目的与 2、课题设计意义:让我们更加熟悉算法,提高我们的动手能力,熟
设计意义 练的掌握算法的运行与程序的实际。领会程序设计的意义。
指导教师: 年月 日
1
目录
一、实验目的及意义.................................................................................................... 1 1.1 实验目的.......................................................................................................... 1 1.11 了解多维数组存储方式和存储特点。................................................. 1 1.12 熟悉稀疏矩阵的存储方式。................................................................. 1 1.13 用三元组法实现稀疏矩阵的转置、相加、相减的操作。................. 1 1.2 实验意义......................................................................................................... 1
二、需求分析................................................................................................................ 1 2.1 设计函数建立稀疏矩阵及初始化值和输出稀疏矩阵的值.......................... 1 2.2 构造函数进行稀疏矩阵的转置并输出结果................................................. 1 2.3 构造函数进行两稀疏矩阵相加、减及相乘并输出最终稀疏矩阵............. 2 2.4 退出系统.......................................................................................................... 2