数据结构实验报告(实验五_稀疏矩阵运算器).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构实验报告(实验五_稀疏矩阵运算器).doc》由会员分享,可在线阅读,更多相关《数据结构实验报告(实验五_稀疏矩阵运算器).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 实验课程名称:数据结构与算法实验项目名称:实验五 数组及其应用稀疏矩阵运算器 实验类型(打 ):(基础 、综合 、设计 ) 实验预习报告内容原则上应包括实验目的、实验所用的主要仪器药品、实验原理与公式、实验预习疑问等项目。 【实验目的】深入研究数组的存储表示和实现技术,熟悉广义表存储结构的特性。【需要分析】稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。要求以带“行逻辑链接信息”的三元组顺序表存储稀疏矩阵,实现两矩阵的相加、相减、相乘等运算。输入以三元组表示,输出以通常的阵列形式列出。【软件平台】W
2、indows 2000,Visual C 6.0或WINTC【概要设计】ADT Array 数据对象: D = aij | 0ib1-1, 0 jb2-1数据关系: R = ROW, COL ROW = | 0ib1-2, 0jb2-1 COL = | 0ib1-1, 0 jb2-2 基本操作:CreateSMatrix(&M); /操作结果:创建稀疏矩阵M.Print SMatrix(M); /初始化条件: 稀疏矩阵M存在./操作结果:输出稀疏矩阵M.AddSMatrix(M,N,&Q);/初始化条件: 稀疏矩阵M与N的行数和列数对应相等./操作结果:求稀疏矩阵的和Q=M+N.SubSMat
3、rix(M,N,&Q);/初始化条件: 稀疏矩阵M与N的行数和列数对应相等./操作结果:求稀疏矩阵的差Q=M-N.MultSMatrix(M,N,&Q);/初始化条件: 稀疏矩阵M的列数等于N的行数./操作结果:求稀疏矩阵的乘积Q=M*N. ADT Array 【疑问】(这部分内容因人而异,也可不写)实验预习评分: 二、实验原始(数据)记录实验同组人 :如有实验实验数据表格,学生在实验预习时应画好实验数据表格,供实验填写数据。请选择所需要的操作功能(A,B,C,D,E,F)A请输入矩阵的行数和列数:行数2列数2非零元素个数:2请按行,列和值的形式输入该矩阵的非零元.并以全零为结束标记!1 2
4、92 1 -1请选择所需要的操作功能(A,B,C,D,E,F):B请输入矩阵的行数和列数:行数2列数2非零元素个数:2请按行,列和值的形式输入该矩阵的非零元.并以全零为结束标记!1 1 -12 1 -3请选择所需要的操作功能(A,B,C,D,E,F):C加法结果为:|-1 9|-4 0|请选择所需要的操作功能(A,B,C,D,E,F):D减法结果为:|1 9|2 0|请选择所需要的操作功能(A,B,C,D,E,F):E乘法结果为:|-27 0|1 0|指导教师批阅及签名 实验报告内容原则上应包括主要实验步骤、实验数据计算(实验操作)结果、实验结果(疑问)分析等项目。【主程序模块】:void m
5、ain() 初始化;do 接受命令; 处理命令;while(命令!=“退出”);【功能模块调用关系图】主程序模块 创建稀疏矩阵模块 运算稀疏矩阵模块 打印稀疏矩阵模块 【详细设计】稀疏矩阵运算器 矩阵相乘 矩阵相加矩阵相减 退出本系统 输入矩阵1输入矩阵1输入矩阵1输入矩阵2输入矩阵2输入矩阵2计算结果计算结果计算结果typedef structint row; /行数int col; /列数int v; /非零元素值triplenode;typedef structtriplenode datamaxsize+1; /非零元三元组int rowtabmaxrow+1; /各行第一个非零元的位
6、置表int mu,nu,tu; /矩阵的行数、列数和非零元个数rtripletable;void creat(rtripletable &A) /创建稀疏矩阵void print(rtripletable A) /输出稀疏矩阵int addsmatrix(rtripletable M, rtripletable N) /矩阵相加int subsmatrix(rtripletable M, rtripletable N) /稀疏矩阵相减void multsmatrix(rtripletable M, rtripletable N, rtripletable &Q) /稀疏矩阵相乘【调试分析】(这
7、部分内容因人而异)1、由于开始对顺序存储的知识还不熟识,在三元组的存储和运用会导致算法低效。2、做到存储的时候,开始时不知道怎样存储三元组,和不知如何去运用它的行数,列数,非零元素。3、在使用选择和循环时,有时因为自己的粗心,把循环的条件弄错了。4、做本程序用到了数组的知识,有时一有不懂的东西又只能打开书来看。5、开始时没有把矩阵的加法和减法的情况考虑全面,导致输出的时候会出现简单的错误。【用户手册】1、本程序的运行环境为Windows me下的Microsofe VC+ 6.0,执行文件为:xishujuzhen.cpp。2、进入演示程序后即显示文本方式的用户界面:- |*稀疏矩阵运算器*|
8、 = |= | A、输入矩阵1 | B、输入矩阵2 | C、矩阵相加 | D、矩阵相减 | | E、矩阵相乘 | F、退出本系统 |- 请选择所需要的操作功能(A,B,C,D,E,F) :3、进入界面后,只要选择数字命令按“回车键”就行。4、接受其他命令后即执行相应的操作和相应的结果。实验报告评分:注:1、如有个别实验的实验报告内容多,实验报告册页面不够写,或有识图,画图要求的,学生应根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。 【源程序】#include#include#include#define m
9、axsize 100#define maxrow 100#define OK 1#define ERROR -1typedef structint row; /行数int col; /列数int v; /非零元素值triplenode;typedef structtriplenode datamaxsize+1; /非零元三元组int rowtabmaxrow+1; /各行第一个非零元的位置表int mu,nu,tu; /矩阵的行数、列数和非零元个数rtripletable;void creat(rtripletable &A) /创建稀疏矩阵int k=1,sum=1,loop,p,t;in
10、t nummaxrow+1;cout请输入矩阵的行数和列数:endl;coutA.mu;coutA.nu;coutA.tu;cout请按行,列和值的形式输入该矩阵的非零元.并以全零为结束标记!endl;for(loop=1;loopA.dataloop.rowA.dataloop.colA.dataloop.v; /输入三元组的行数,列数和非零元素值for(p=1;p=A.mu;p+) nump=0; /A三元组每一列的非零元素个数for(t=1;t=A.tu;t+) +numA.datat.row; /求A中每一列含非零元个数A.rowtab1=1; /求第p列中第一个非零元在A.data中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 稀疏 矩阵 运算器
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内