收藏 分享(赏)

数据结构实验(5).doc

上传人:scg750829 文档编号:5883345 上传时间:2019-03-20 格式:DOC 页数:11 大小:118.09KB
下载 相关 举报
数据结构实验(5).doc_第1页
第1页 / 共11页
数据结构实验(5).doc_第2页
第2页 / 共11页
数据结构实验(5).doc_第3页
第3页 / 共11页
数据结构实验(5).doc_第4页
第4页 / 共11页
数据结构实验(5).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、计算机系数据结构实验报告(1)姓名: 孟红波 学号: 6100410179 专业班级: 卓越 101 班 实验目的:深入研究数组的存储表示和实现技术,着重掌握对稀疏矩阵的表示方法及其运算的实现。问题描述:稀疏矩阵是指那些多数元素为零的矩阵。利用稀疏特点进行存储和计算可以大大节省存储空间,提高效率。通过对稀疏矩阵的存储表示,实现矩阵的基本操作。实验要求:文法是一个四元1、要求矩阵的输入形式采用三元组表示,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵。2、设计矩阵的逆置算法,实现矩阵的逆置。3、实现两个稀疏矩阵的相加、相减和相乘等运算。4、要求运算结果的矩阵则以通常的数组形式出现。 实验内容和

2、过程:实验步骤1、 首先应输入矩阵的行数和列数、并判别给出的两个矩阵的行、列数对于所要求的运算是否相匹配;2、 以三元组的形式输入矩阵;3、 调用矩阵的逆置子函数、相加函数和相乘函数;4、 分析输出结果,并进行总结。输入数据:2 1 00 0 00 0 30 0 00 0 00 0 2+ =2 1 00 0 00 0 52 1 00 0 00 0 32 0 01 0 00 0 3-12 1 00 0 30 00 00 2* = 0 00 6实验程序:#include #include using namespace std; const int MAXSIZE=100; const int M

3、AXROW=10; typedef struct int i,j; int e; Triple; typedef struct Triple dataMAXSIZE+1; int mu,nu,tu; TSMatrix; typedef struct Triple dataMAXSIZE+2; int rposMAXROW+1; int mu,nu,tu; RLSMatrix; template bool InPutTSMatrix(P coutT.datak.iT.datak.jT.datak.e; return true; template bool OutPutSMatrix(P T) i

4、nt m,n,k=1; for(m=0;mMAXSIZE) return false; Q.dataQ.tu.e=ctempccol; Q.dataQ.tu.i=arow; Q.dataQ.tu.j=ccol; OutPutSMatrix(Q); return true; typedef struct OLNode int i,j; int e; struct OLNode *right,*down; OLNode,*OLink; typedef struct OLink *rhead,*chead; int mu,nu,tu; CrossList; bool CreateSMatrix_OL

5、(CrossList coutM.muM.nuM.tu; if(!(M.rhead=(OLink*)malloc(M.mu+1)*sizeof(OLink) exit(0); if(!(M.chead=(OLink*)malloc(M.nu+1)*sizeof(OLink) exit(0); for(x=0;xxym; OLink p,q; if(!(p=(OLink)malloc(sizeof(OLNode) exit(0); p-i=x; p-j=y; p-e=m; if(M.rheadx=NULL|M.rheadx-jy) p-right=M.rheadx; M.rheadx=p; el

6、se for(q=M.rheadx;(q-right) p-right=q-right; q-right=p; / 完成行插入 if(M.cheady=NULL|M.cheady-ix) p-down=M.cheady; M.cheady=p; else for(q=M.cheady;(q-down) p-down=q-down; q-down=p; / 完成列插入 return true; bool OutPutSMatrix_OL(CrossList T) for(int i=1;ij) coute; p=p-right; else coute=pb-e; p-i=pb-i; p-j=pb

7、-j; if(NULL=pa|pa-jpb-j) if(NULL=pre) M.rheadp-i=p; else pre-right=p; p-right=pa; pre=p; if(NULL=M.cheadp-j) M.cheadp-j=p; p-down=NULL; else p-down=hlp-j-down; hlp-j-down=p; hlp-j=p; pb=pb-right; else if(NULL!=pa) pa=pa-right; else if(pa-j=pb-j) pa-e += pb-e; if(!pa-e) if(NULL=pre) M.rheadpa-i=pa-ri

8、ght; else pre-right=pa-right; p=pa; pa=pa-right; if(M.cheadp-j=p) M.cheadp-j=hlp-j=p-down; else hlp-j-down=p-down; free(p); pb=pb-right; else pa=pa-right; pb=pb-right; OutPutSMatrix_OL(M); return true; int main() cout.fill( ); / system(“color 0C“); cout.fill( ); cout void main(void) const int SIZE=1

9、1; int gridSIZESIZE; int gridTSIZESIZE; int i,j; for(i=0;igridij; for(i=0;iSIZE;i+) for(j=0;jSIZE;j+) gridTij=gridji; cout“原始矩阵“endl; for(i=0;iSIZE;i+) for(j=0;jSIZE;j+) coutgridij“ “; coutendl; cout“转置矩阵“endl; for(i=0;iSIZE;i+) for(j=0;jSIZE;j+) coutgridTij“ “; coutendl; 2、 如果用十字链表方式表示稀疏矩阵的话,如何来实现矩阵的相加操作呢?总结和感想:通过实验,我数组的存储表示和实现技术,对矩阵的逆置、矩阵的加减运算和乘除运算有更深的了解,能熟练运用矩阵进行相关的操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报