稀疏矩阵的应用_第1页
稀疏矩阵的应用_第2页
稀疏矩阵的应用_第3页
稀疏矩阵的应用_第4页
稀疏矩阵的应用_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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;1 col nu

3、1. 实验分析:在本次实验当中,需要注意一下几个关键点:1. 设置转置后矩阵 b 的行数、列数和非零元素的个数;2. 计算 a 中每一列的非零元素个数;3.计算 a 中每一列的第一个非零元素在b 中的下标;4. 依次取 a 中的每一个非零元素对应的三元组;2.1确定该元素在b 中的下标pb;2.2将该元素的行号列号交换后存入b 中 pb 的位置;2.3预置该元素所在列的下一个元素的存放位置;具体要定义如下若干个函数:void setup()初始化非零元的个数void transition()转置函数void inputvoid print1()void print2()()输入函数输出函数输出

4、函数2. 源程序代码:#includeusing namespace std;#include #define maxsize 50typedef int datatype;typedef structintp,q;datatype x; list; typedef structint md,nd,td; tabletype;int n,m;/*稀疏矩阵的行数、列数*/void input(datatype amaxsizemaxsize );void setup (datatype amaxsizemaxsize, list ta,tabletype *ta1 ); void transit

5、ion (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)=null)cout 申请空间错误!n;return 0;if (t

6、b1=(tabletype *)malloc(sizeof(tabletype)=null)cout 申请空间错误!n;return 0;input(a);setup(a,ta,ta1);transition(ta1, tb1, ta,tb);coutn原稀疏矩阵为:n;print1(a );couttd);couttd);return 1; /* 输入 */void input(datatype amaxsizemaxsize )int i,j;coutn;coutm;for(i=0;in;i+)for(j=0;jaij;/* 建立 */void setup (datatype amaxsi

7、zemaxsize, list ta, tabletype *ta1)int i,j;ta1-td=0;/*初始化非零元素个数*/for(i=0; in;i+)for(j=0;jtd.p=i;tata1-td.q=j;tata1-td.x=aij;ta1-td+;ta1-md=n;ta1-nd=m;/* 转置 */void transition (tabletype *ta1, tabletype *tb1, 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;

8、ind;i+)/*i原矩阵的列下标*/for(j=0;jtd;j+)/*j原三元组顺序表的下标*/if(taj.q=i)/*寻找原矩阵中最小列下标*/tbnn.p=taj.q;tbnn.q=taj.p;tbnn.x=taj.x;nn+;/* 矩阵输出 */void print1(datatype amaxsizemaxsize)int i,j;for(i=0; in;i+) for(j=0;jm;j+)coutaij ;coutn;/* 三元组顺序表输出*/void print2(list a,int nn)int i;coutt行号 t列号 t元素值 n;for(i=0; inn;i+)coutai.pai.qai.xn;coutn;实 验 内 容3. 测试用例:1, 当输入原稀疏矩阵为a33=2,0,3;1,0,4;0,0,1时程序运行结果如下:2. 当输入稀疏矩阵为a22=1,0;0,2时运行结果如下:实 验 内 容实 验 总 结4. 实验总结:针对稀疏矩阵的压缩存储应用, 通过本次实验对它有一定的系统了解, 在这次实验的的过程当中起初有很多问题比较疑惑, 甚至根本动不了手, 但是通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论