1 / 18
文档名称:

稀疏矩阵数据结构实验报告.doc

格式:doc   大小:218KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

稀疏矩阵数据结构实验报告.doc

上传人:世界末末日 2024/3/25 文件大小:218 KB

下载得到文件列表

稀疏矩阵数据结构实验报告.doc

相关文档

文档介绍

文档介绍:该【稀疏矩阵数据结构实验报告 】是由【世界末末日】上传分享,文档一共【18】页,该文档可以免费在线阅读,需要了解更多关于【稀疏矩阵数据结构实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................10参考文献.................................................................................................................................15致谢............................................................................................................................................,尤其是有些特殊矩阵的运算。但是在实际应用中有一种矩阵,在m×n的矩阵中有t个非零元素,且t远小于m×n,我们这样的矩阵被称为稀疏矩阵。由于这类矩阵中通常零元素是没有规律的,为了能够找到相应的元素,仅存储非零元素的值是不行的,还要存储其所在的行和列等信息。本程序主要的任务是创建稀疏矩阵,并且利用C++算法程序实现相应的运算(转置,加法,减法,乘法)(1)输入的形式以及范围:键盘输入符合要求的稀疏矩阵。(2)输出形式:最终运算结果以矩阵的形式输出。(3)程序功能实现:输入矩阵通过程序运算出相应的转置矩阵以及两个符合要求的矩阵的加减乘除法的运算。(4)测试数据:如果输入正确,程序会显示最后的运算结果;否则错误时则会返回上层。,那么就要了解稀疏矩阵的存储结构,这里采用链表的形式存储稀疏矩阵并进行运算。{//定义链表元素inti,j;inte;structOLNode*next;//该非零元所在行表和列表的后继元素}OLNode,*OLink;typedefstruct{//定义链表对象结构体OLink*head;//头指针intmu,nu,tu;//行数,列数,和非零元素个数}CrossList;(M)函数来实现稀疏矩阵的存储,用OutPutSMatrix_OL(M)函数实现稀疏矩阵的输出。()函数实现稀疏矩阵的转置操作。()函数实现稀疏矩阵的加法运算。()函数实现稀疏矩阵的减法运算。()函数实现稀疏矩阵的乘法运算。在TransposeSMatrix(),AddSMatrix(),SubSMatrix(),MultSMatrix()各函数中又调用到矩阵的存入和输出函数。图2-:创建一个数据域还有一个指针域,数据域用来存储该非零元素的行、列、数值;指针域next指向下一结点。如图3-1所示图3-1链表的结点结构把稀疏矩阵的三元素(行数、列数、非零元素个数)放在头结点中,头结点的next指向第一个结点。数据结点中数据域存储行值、列值、数值,指针指向下一个结点,这样把一个个的结点连接起来。在此以稀疏矩阵为例,画出十字链表存储的结构图如图3-2:图3-,该稀疏矩阵程序需要实现以下运算功能:(1)稀疏矩阵的转置(2)稀疏矩阵的乘法(3)稀疏矩阵的加法(4)稀疏矩阵的减法根据整个函数的具体分析,从中可以剖析出程序具有以下函数表3-1程序中的函数列表相应函数相应功能用链表的方式存储稀疏矩阵CreateSMatrix_OL(CrossList&M)读取用链表存储的稀疏矩阵OutPutSMatrix_OL(CrossListT)转置矩阵TransposeSMatrix()稀疏矩阵的乘法MultSMatrix()AddSMatrix()稀疏矩阵的加法SubSMatrix()()函数该函数是对输入的稀疏矩阵进行转置,设原矩阵为M是一个m×n稀疏矩阵,那么其转置矩阵N就是一个n×m的稀疏矩阵。只要把稀疏矩阵M的行、列转化为T的列、行。调用CreateSMatrix_OL(CrossList&M)函数读取要转置的矩阵M,定义转置后的矩阵N。复制矩阵M的头结点,设当前指针为P,逐个读取存储矩阵M的链表信息,对读取的数据域中对行值和列值进行交换操作,并把操作后的结点连接到存储矩阵N的链表中,直到链表读取结束。调用OutPutSMatrix_OL(CrossListT)函数读取转置后的矩阵N。()函数该函数是实现两个稀疏矩阵的乘法。调用CreateSMatrix_OL(CrossList&M)函数读取要进行运算的两个矩阵M,N,定义结果矩阵Q。判断M的行数值是否等于N的列数值,若相等则进行运算,若不相等则返回上一函数。创建Q的头结点,把M的行数,N的列数存入头结点head的数据域,设指向M的当前结点为p,指向N的当前结点为q。p逐个检查M的行数值,同时q检查N矩阵相应的列数的各个数据,若p所指行数等于q所指列数同时p所指列数等于q所指列数,则两数据进行相乘运算。并把结果存入辅助数据但愿a中,当一行检查结束时,单元a中的数据之和用结点形式存入Q链表中去。若不相等那么继续读取下一行。例如:当p指向M的一行的各数,q读取N的第一列各数,若p读取的列数等于q读取的行数则当前结点中的数值相乘存入一个辅助数据单元a(a对存入的数据相加操作)中,当p读取一行结束时把a存入创建的Q链表中,若没有找到则继续查找M的下一行。最终调用输出函数输出矩阵Q。函数运算流程如图3-4所示:5稀疏矩阵的存储及运算图3-()函数该函数是用来实现两个矩阵的加法。6稀疏矩阵的存储及运算调用输入矩阵,输入要进行计算的矩阵M,N判断矩阵M、N的行列数值是否相等,若相等则继续,若不相等则返回上一界面。创建Q的头结点,p指针对M矩阵的元素进行逐个读取,同时q指针对矩阵N的元素进行逐个读取,若p指针所指向M的行值和列值与q指向的N的行值和列值对应相等,那么两个数据相加。判断所加的值是否为零,若为零则继续读取,若不为零则把相加的数据结点存入Q链表中。若为找到行列值对应相等的结点则直接把p所指结点存入Q链表中,p继续读取。调用输出函数输出Q矩阵。该函数的运作流程图如图3-5所示:图3-()函数该函数是把对应的两个矩阵进行相减的运算。由于减法运算类似于加法运算,那么我们可以参照加法运算的方式进行相应的操作。