数据结构实验三(数组应用).pdf

数据结构实验三(数组应用).pdf

ID:48007974

大小:654.04 KB

页数:18页

时间:2020-01-12

数据结构实验三(数组应用).pdf_第1页
数据结构实验三(数组应用).pdf_第2页
数据结构实验三(数组应用).pdf_第3页
数据结构实验三(数组应用).pdf_第4页
数据结构实验三(数组应用).pdf_第5页
资源描述:

《数据结构实验三(数组应用).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构与算法课程实验报告实验三:稀疏矩阵的压缩存储及运算姓名:CLL班级:学号:2014326601072实验三稀疏矩阵的压缩存储及运算实验内容:实现稀疏矩阵的压缩存储方法以及在特定存储方法下的基本运算。实验目的:掌握数组的应用,包括稀疏矩阵、特殊矩阵的压缩存储方法。矩阵的基本运算的实现,包括矩阵相加、转置、乘法等。具体要求:实验报告要求:1、封面2、内容包含:实验内容、实验目的、问题描述、问题的实现(包括所用数据结构的抽象数据类型定义和说明、主要的实现思路)、主要源程序代码(包含程序备注)3、总结4、附上程序的源文件问题描述:(1)用行逻辑链接顺序表或十字链表分别实现稀疏矩阵的压缩

2、存储。(2)编程实现矩阵的转置运算和乘法运算(运用行逻辑链接顺序表或十字链表作为存储结构)。问题的实现:(1)矩阵的创建:1:根据矩阵创建一个二维数组,表示原始矩阵2:取出二维数组中的元素(从第一个元素开始取),判断取出元素是否为非零元素,如果为非零元素,把该非零元素的数值以及行下标和列下表储存到三元数组表里,否则取出下一个元素,重复该步骤。3:重复第二步,知道二维数组中所有的元素已经取出(2)矩阵转置算法:1:判断进行倒置的矩阵是否为空矩阵,如果是,则直接返回错误信息。2:计算要倒置的矩阵每列非零元素的数量,存入到num数组(其中num[i]代表矩阵中第i列非零元素的个数)。以及倒置

3、后矩阵每行首非零元的位置,存入cpot数组中(其中cpot表示倒置后矩阵每行非零元的位置,对应表示原矩阵每列中第一个非零元的位置)。3:确定倒置后矩阵的行数和列数。4:取出表示要导致矩阵中三元组表元素{e,I,j}(第一次取出第一个,依次取出下一个元素),从第二步cpot数组中确定该元素倒置后存放的位置(cpot[j]),把该元素的行下标和列下标倒置以后放入新表的指定位置中。cpot[j]变量加一。5:重复第四步,直到三元组表中所有的元素都完成倒置。6:把完成倒置运算的三元组表输出。(3)矩阵的加法:1:检查相加两个矩阵的行数和列数是否相同,如果相同,则进入第二步,否则输出错误信息。2

4、:定义变量i和j,用于控制三元组表的遍历。3:比较变量矩阵M中第i个元素和矩阵N中第j个元素,如果两个元素是同一行元素,如果不是则进入第四步,如果是,再继续比较两个元素是否为同一列元素,如果是,把两个元素值相加,放到三元组表中;否则把列下表小的元素依次放到三元组表中。进入第五步4:如果矩阵M中第i个元素的行下标大于矩阵N中第j个元素的行下标,则把矩阵N中第j个元素所在行的所有非零元素添加到三元组表中;如果矩阵M中第i个元素的行下标小于矩阵N中第j个元素的下标,则把M中第i个元素所在行的所有非零元素依次添加到三元组表中。5:重复第三步,直到矩阵M和矩阵N中所有元素都非零元素添加到三元组表

5、中。6:输出运算结果(3)矩阵的乘法:1:检查矩阵M和矩阵N能否参与乘法运算(即矩阵M的列数等于矩阵N的行数),如果两个矩阵可以参与乘法运算,进入下一步,否则输出错误信息2:检查两个矩阵相乘以后是否为零矩阵,如果相乘结果是零矩阵,直接返回一个零矩阵。3:分别计算矩阵M和矩阵N中每行非零元的个数(分别存放到num_m和num_n数组中),并计算出每行首非零元的位置(分别存放到cpot_m和cpot_n中)。4:依次取矩阵M中的非零元(第一次取出矩阵M中的第一个非零元),求出该非零元所在行和所在列乘积的和,然后把值放到结果三元组表的特定位置。5:重复第四步,直到矩阵M中所有非零元都已经参与

6、运算。6:输出结果【程序截图】矩阵的转置矩阵的加法矩阵的乘法【代码实现】#include#include#include#defineMAXSIZE1000#defineOK0#defineMALLOC_FAIL-1//表示分配空间时发生错误#defineEMPTY_MATRIX-2//表示正尝试对一个空矩阵进行运算操作#defineMATRIX_NOT_MATCH-3//表示尝试对不符合运算条件的矩阵进行运算操作(例如非相同行数列数矩阵相加)/*-----------结构体声明部分----------------*/type

7、defstruct{introw;//非零元的行下标intcol;//非零元的列下标inte;//非零元的值}Triple;typedefstruct{Triple*data;//非零元素的元素表intrownum;//矩阵的行数intcolnum;//矩阵的列数intnum;//矩阵非零元的个数}TSMatrix,*PTSMatrix;/*-----------函数声明部分------------------*///初始化稀疏矩阵结构intT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。