




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上武 汉 工 程 大 学计算机科学与工程学院数据结构实验报告专业班级 实验地点 学生学号 指导教师 学生姓名 实验时间实验项目实验类别操作性()验证性( )设计性( )综合性(Y )其它( )实验目的及要求(1)掌握掌握稀疏矩阵的表示方法及其运算的实现;(2)实现稀疏矩阵在三元组、十字链表等表示下的各运算并分析其效率。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律认真完成实验任务30分报告质量程序代码规范、功能正确填写内容完整、体现收获70分说明: 评阅教师: 日 期: 年 月 日稀疏矩阵的应用1、实验目的:(1)掌握掌握稀疏矩阵的表示方
2、法及其运算的实现;(2)实现稀疏矩阵在三元组、十字链表等表示下的各运算并分析其效率。2、实验内容在m×n 的矩阵中,有t个非零元。令= t/(m*n),称矩阵的稀疏因子,常认为0.05时称为稀疏矩阵。稀疏矩阵在工程中有着大量的应用,不少工程问题都可以转化为对稀疏矩阵的计算问题。用三元组表实现稀疏矩阵的转置,用(顺序取,直接存)方法。3、实验说明:引入两个数组作为辅助数据结构: numnu:表示矩阵A中某列的非零元素的个数; cpotnu:初始值表示矩阵A中某列的第一个非零元素在B中的位置。 num与cpot递推关系:cpot0=0;cpotcol=cpotcol-1+numcol-1
3、; 1colnu1.实验分析:在本次实验当中,需要注意一下几个关键点:1. 设置转置后矩阵B的行数、列数和非零元素的个数;2. 计算A中每一列的非零元素个数;3. 计算A中每一列的第一个非零元素在B中的下标;4. 依次取A中的每一个非零元素对应的三元组;2.1 确定该元素在B中的下标pb;2.2 将该元素的行号列号交换后存入B中pb的位置;2.3 预置该元素所在列的下一个元素的存放位置;具体要定义如下若干个函数:void setup()初始化非零元的个数void transition()转置函数void input()输入函数void print1()输出函数void print2()输出函数
4、2.源程序代码:#include<iostream>using namespace std;#include <malloc.h>#define maxsize 50typedef int datatype;typedef struct int p,q;datatype x; List;typedef structint md,nd,td; tabletype;int n,m; /*稀疏矩阵的行数、列数*/ void input(datatype amaxsizemaxsize );void setup (datatype amaxsizemaxsize, List t
5、a,tabletype *ta1 );void transition (tabletype *ta1, tabletype *tb1, List ta,List tb);void print1(datatype amaxsizemaxsize);void print2(List a,int nn);int main( ) datatype amaxsizemaxsize; /*稀疏矩阵*/List tamaxsize,tbmaxsize; /*三元组顺序表*/tabletype *ta1,*tb1;if (ta1=(tabletype *)malloc(sizeof(tabletype)=NU
6、LL) cout<<"申请空间错误!n"return 0; if (tb1=(tabletype *)malloc(sizeof(tabletype)=NULL) cout<<"申请空间错误!n"return 0; input(a);setup(a,ta,ta1);transition(ta1, tb1, ta,tb);cout<<"n原稀疏矩阵为:n"print1(a );cout<<"n原三元组顺序表为:n"print2(ta,ta1->td);cout&l
7、t;<"n转置后的三元组顺序表:n"print2(tb, tb1->td);return 1; /*输入*/void input(datatype amaxsizemaxsize ) int i,j;cout<<"n请输入稀疏矩阵的行数"cin>>n;cout<<"n请输入稀疏矩阵的列数"cin>>m;for(i=0;i<n;i+)for(j=0;j<m;j+) printf("n请输入数据a%d%d=",i,j);cin>>aij
8、;/*建立*/void setup (datatype amaxsizemaxsize, List ta, tabletype *ta1) int i,j;ta1->td=0; /*初始化非零元素个数*/for(i=0; i<n;i+)for(j=0;j<m;j+)if (aij!=0) tata1->td.p=i;tata1->td.q=j;tata1->td.x=aij;ta1->td+; ta1->md=n;ta1->nd=m; /*转置*/void transition (tabletype *ta1, tabletype *tb1
9、, List ta,List tb) int i,j,nn=0;tb1->md=ta1->nd;tb1->nd=ta1->md;tb1->td=ta1->td;if(ta1->td!=0)for (i=0;i<ta1->nd;i+) /*i 原矩阵的列下标*/for(j=0;j< ta1->td;j+) /*j 原三元组顺序表的下标*/ if(taj.q=i) /*寻找原矩阵中最小列下标*/ tbnn.p=taj.q;tbnn.q=taj.p;tbnn.x=taj.x;nn+; /*矩阵输出*/void print1(datat
10、ype amaxsizemaxsize) int i,j;for(i=0; i<n;i+) for(j=0;j<m;j+)cout<<aij<<" "cout<<"n" /*三元组顺序表输出*/void print2(List a,int nn) int i;cout<<"t行号t列号t元素值n"for(i=0; i<nn;i+)cout<<" "<<ai.p<<" "<<ai.q<<" "<<ai.x<<" "<<"n" cout<<"n"实 验 内 容3.测试用例:1,当输入原稀疏矩阵为A33=2,0,3;1,0,4;0,0,1时程序运行结果如下:2.当输入稀疏矩阵为A22=1,0;0,2时运行结果如下:实 验 内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025劳动合同的分类:不同类型的劳动合同及其特点
- 肺水肿护理考试题及答案
- 防辐射考试题目及答案
- 2025装修合同解除协议
- 中国硫酸氧钛项目商业计划书
- 电工急救证考试题及答案
- 2025年中国水稻专用复合肥料项目商业计划书
- 电动自行车相关行业投资方案范本
- 地理南极考试题目及答案
- 大学团员考试题型及答案
- 2025年院级住培师资培训考试试题(含答案)
- 行政自学考试试题及答案
- 2025年湖南邵阳武冈市城乡供水有限公司招聘5人笔试历年参考题库附带答案详解(3卷合一)
- GB/T 31971.3-2025船舶与海上技术海上环境保护:撇油器性能试验第3部分:高黏度油
- 艺人独家经纪合同(标准版)
- 福建省银行业专业人员初级职业资格考试(银行业法律法规与综合能力)试题及答案(2025年)
- 商业银行统一报表平台:设计理念、技术实现与实践成效
- 《守望成长法治护航》法制教育主题班会
- 乌鲁木齐市既有建筑改造消防设计与审查指南
- 2025小红书S+级项目《宝藏目的地》招商方案
- IMPA船舶物料指南(电子版)
评论
0/150
提交评论