课程设计实验报告稀疏矩阵应用

课程设计实验报告稀疏矩阵应用

ID:36472465

大小:1.73 MB

页数:10页

时间:2019-05-11

课程设计实验报告稀疏矩阵应用_第1页
课程设计实验报告稀疏矩阵应用_第2页
课程设计实验报告稀疏矩阵应用_第3页
课程设计实验报告稀疏矩阵应用_第4页
课程设计实验报告稀疏矩阵应用_第5页
资源描述:

《课程设计实验报告稀疏矩阵应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据结构课程设计《数据结构》课程设计一.题目:稀疏矩阵应用(限1人完成)要求:实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。(1)稀疏矩阵的存储(2)稀疏矩阵加法(3)矩阵乘法(4)矩阵转置二.算法思想描述:1.算法概述:首先用两个结构体来定义十字链表元素:typedefstructOLNode{inti,j;inte;structOLNode*right,*down;}OLNode,*OLink;OLNode结构为链表结点,i,j,e分别表示稀疏矩阵中元素的行,列和值。typedefstruct{intmu,nu,tu;//行

2、数mu,列数nu,非零元素的个数tuOLink*rhead,*chead;}CrossList;CrossList结构用于连接起各个结点,mu,nu,tu分别表示整个矩阵的行数列数和非零元素的个数。整个程序包含CreateSMatix_OL(用于创建十字链表),SMatrix_ADD(十字链表相加),ShowMAtrix(十字链表显示),MultSMatrix_OL(十字链表相乘),TurnSMatrix_OL(十字链表转置),DestroySMatrix_OL(十字链表销毁)六个函数。CreateSMatix_OL的功能如下:首先输

3、入稀疏矩阵的行数,列数,非零元素的个数,为*rhead和*chead分配内存空间,并将十字链表中节点初始化为NULL。然后依次输入非零元素的行,列,值,以000为结尾结束链表的连接和while循环。SMatrix_ADD的功能如下:在初始化稀疏矩阵后选择十字链表相加会提示输入另一个稀疏矩阵,连接结束后SMatrix_ADD函数以循环的方式比较非零元素是否为同一行列,如果是则两值相加,如果不是则把第二个元素加入链表中。ShowMAtrix的功能如下:逐一输出链表的行,列,值三个元素知道达到表尾的NULL。MultSMatrix_OL的功

4、能如下:10与相加类似,在初始化稀疏矩阵后选择十字链表相加会提示输入另一个稀疏矩阵,连接结束后MultSMatrix_OL函数以循环的方式比较非零元素是否为同一行列,如果是则两值相乘,如果不是则修改原来的元素值为0。TurnSMatrix_OL的功能如下:逐一查找十字链表中各个元素,将他们的i,j值对调已达到转置的目的.1.算法具体分析(1)、输入需要执行的操作:1为创建稀疏矩阵,调用CreateSMatix_OL函数,输入稀疏矩阵的行数列数和非零元素的个数(如221,中间以空格分开)CreateSMatix_OL函数会将各个元素的信

5、息保存在十字链表的结点中并连接起来。2为退出程序。(2)、选择接下来要执行的操作:1为稀疏矩阵转置调用TurnSMatrix_OL函数逐一查找十字链表中各个元素,将他们的i,j值对调已达到转置的目的。2为稀疏矩阵相加,调用SMatrix_ADD函数创建另一个稀疏矩阵并且将两矩阵中的非零元素相加。3为稀疏矩阵相乘,调用MultSMatrix_OL函数创建另一个稀疏矩阵并且将两矩阵中的同行列的非零元素项相乘,其余项修改为0。4为退出。(3)、程序显示操作结果,运行正常,结果正确。三、程序结构main()函数退出CreateSMatix_O

6、L()函数exit()函数TurnSMatrix_OL()函数Switch()函数Switch()函数ShowMAtrix()函数CreateSMatix_OL();函数SMatrix_ADD();函数ShowMAtrix()函数CreateSMatix_OL()函数MultSMatrix_OL()函数ShowMAtrix()函数10四、实验结果与分析上述程序在VisualC++6.0环境下加以实现,经过多次的测试,程序运行正确。例如:输入1,再输入221接着输入非零元素为第2行第1列值为9(219).运行结果如图2,图中创建十字链表

7、成功可以选择后续操作稀疏矩阵转置,稀疏矩阵相加,稀疏矩阵相乘。图2选择稀疏矩阵相加实验,输入2,再输入222创建另一个稀疏矩阵,接着输入119和211两个非零元素,SMatrix_ADD函数会将两个矩阵的非零元素相比较,在同行列的值相加,不在同行列的为十字链表添加结点,计算结果如图3,可以看到第一行第一列的元素9被加入到链表中,而第2行第1列的两个元素9和1相加得到10,程序运行成功。10图3五.体会通过这次课程设计,我有很深的体会,具体如下:1.十字链表的建立,和使用有了更深层次的理解。2.各种循环语句的使用和switch语句的应用

8、比较熟悉了。3.把各个功能写在不同的函数体里,分工明确,条理清晰,这样不但语句简洁,而且十分明了。4.从用户角度出发来编写程序,使结果尽量简洁明了。附代码:#include#include

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

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

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