数据结构课程设计_第1页
数据结构课程设计_第2页
数据结构课程设计_第3页
数据结构课程设计_第4页
数据结构课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程设计:制作一个菜单, 让用户选择让其进行的任务, 系数矩阵的操作功能有:数据结构课程设计:制作一个菜单, 让用户选择让其进行的任务, 系数矩阵的操作功能有:输入1创建两个是自链表对象并初始化。 2检测两矩阵能否相加(相减)ADT数据对象mu, nu, tu 分别表示矩阵的行数,数据关系: R=Row,Col操作: 从键盘输入数据 OutPutSMatrix(RLSMatrix p );初始条件: 稀疏矩阵 p 存在 操作结果: 输出稀疏矩阵 p 操作结果: 创建稀疏矩阵 M OutPutSMatrix_OL(CrossListT);操作结果; 链表初始条件操作结果QM初始条件操作结

2、果QMeSMatrix(: 操作结果: M T MultSMatrix ( );初始条件操作结果QM*ADTeSMatrix(: 操作结果: M T MultSMatrix ( );初始条件操作结果QM*ADT#define/* MAXSIZE=100;MAXROW=10; / typedefstruct / typedefstruct / r voidOutPutSMatrix(RLSMatrixp ); / voideSMatrix( ); / voidMultSMatrixtypedefstructOLNode / structOLNode*right,*down;typedefstru

3、ct / OLinkmu,nu,tu;voidCreateSMatrix_OL(CrossList&M); / 创建 void OutPutSMatrix_OL(CrossList T); / 输出 voidAddSMatrix();/矩阵的加法OLinkmu,nu,tu;voidCreateSMatrix_OL(CrossList&M); / 创建 void OutPutSMatrix_OL(CrossList T); / 输出 voidAddSMatrix();/矩阵的加法1).输入矩阵 p: 输入非零元素的行下标, 列下标和值 零元输出 0voidMultSMatrix输入矩阵Q 初始化

4、ctemp/for/5). 初始化各行各列头指针, 分别为 NULL开辟新的节点用新元素p=6, 链表对象, 对M的每一行进行操作, 把N中此行的每个元素取出6, 链表对象, 对M的每一行进行操作, 把N中此行的每个元素取出M 此行已经检查完或者 pb 因该放在 pa 前面 if(NULL = pa | pa- j pb-j)进行列if(NULL!=pa)&pa-je += pb-e;, if(!pa-e)if(NULLpre) / a-i=pa-VC+环境下加以实现的通过实验表明运行正确。下面介绍一个实验1. 测试矩阵的转置数据与输出结果如下12 3 41 1 21 2 2 1 -2 3 2

5、30-01230-01Pressanykeyto22 2 1 1 2 1 2 2 1 1 -1 2 2 1 Pressanykeytocontinue 22 2 1 1 1 2 2 1 2 2 1 1 1 2 2 1 2 2 2 3 1 1 2 2 2 3 Pressanykeytocontinue 直报错, 32 3 1 1 -1 3 2 2 2 3 1 1 1 2 -2 2 2 3 0 -Pressanykeyto43 2 41 1 2 1 2 2 -3 2 3 2 32 2 43 2 41 1 2 1 2 2 -3 2 3 2 32 2 3 1 3 2 , , 。, 稀疏矩阵这题很多书上

6、都有, 就借鉴书本和老师的指导, 做出了矩阵的输入输出, 加法,减法和乘法, 因为一般按三元组方法输入和输出矩阵比较简单, 所以就用了三元组方法, 阵的乘法也用其三元组方法写的, 这一部分定义了一个类型的头文件, 链表法做的, 链表, 链表的头文件, , ,考虑不到都会影响整个程序的调试, 就通不过, 细细的看每一句同学帮忙, 最终编译成功, 连接, 运行时也遇到很到问题, 所以一个程序要能够成功要需要很多步骤, 只有每组可能的数据都测试成功了才能算一个成功的程序,。课程和算法, 对此有了更深刻的了解, 的课件, , 出这个设计来, 给自己了有越感, #define/* MAXSIZE=100

7、;MAXROW=10; / typedefstruct / /*typedefstruct, 出这个设计来, 给自己了有越感, #define/* MAXSIZE=100;MAXROW=10; / typedefstruct / /*typedefstruct typedefstruct / r voidOutPutSMatrix(RLSMatrixp ); / voideSMatrix( ); / voidMultSMatrixtypedefstructOLNode / structOLNode*right,*down;typedefstruct / OLinkmu,nu,tu;voidCr

8、eateSMatrix_OL(CrossList&M); / 创OLinkmu,nu,tu;voidCreateSMatrix_OL(CrossList&M); / 创voidOutPutSMatrix_OL(CrossListTusing#include cin p.mu p.nu p.tu;k = 1;for(;kp.datak.ip.datak.jvoidOutPutSMatrix(RLSMatrixpm,n,k= for(m=0;m p.mu;mfor(n=0;np.nu;nif(p.datak.i-1)=m&(p.datak.j-1)=cout cout/ void cout/ vo

9、id InPutTSMatrix(M); /输入矩阵col,q,p=1; for(col=0;col=T.tu;colfor(q=1;q=T.tu;qif(M.dataq.j=p +;voidMultSMatrix(RLSMatrixM,N,QInPutTSMatrix(Mif(M.nu != N.mu)Q.muM.mu;Q.nuN.nu;Q.tu0;QctempMAXROW+1if(M.tu*N.tuif(M.nu != N.mu)Q.muM.mu;Q.nuN.nu;Q.tu0;QctempMAXROW+1if(M.tu*N.tuQfor(arow=1;arow = M.mu;arowx1;

10、xN.nu;x +) / ctempx=arowQ.tu1; / if(arowM.mu)tp=else tp=M.tu+ for(p=arowptp;p; / if(browMAXSIZE)0;/returnfalse; Q.dataQ.tu.e = ctempccol; Q.dataQ.tu.i = arow;Q.dataQ.tu.j=voidCreateSMatrix_OL(CrossList&M)/ cin M.mu M.nu M.tu;if(!(M.rhead = (OLink*)malloc(M.mu + 1) * sizeof(OLink) exit(0); if(!(M.che

11、ad = (OLink*)malloc(M.nu+1) * sizeof(OLink) exit(0); for(x0;xM.mu;voidCreateSMatrix_OL(CrossList&M)/ cin M.mu M.nu M.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(x0;xM.mu;x +) / 初始化各行,列头指针,分别为NULLM.rheadx = NUL

12、L; for(x=0;xxym; OLink p,q;); / p-i=x;p-j=y;p-e = if(M.rheadx=NULL|M.rheadx-jp-right=M.rheadx;M.rheadx=for(q = M.rheadx;(q-right) & (q-right-j right); / 查找节点在p-rightq-rightq-rightp; / if(M.cheady=NULL|M.cheady-ip-down=M.cheady;M.cheady=for(qM.cheady(q-down&q-down-ixqq-down); / p-downq-down;q-downp;

13、/ voidOutPutSMatrix_OL(CrossListT)i= 1;i=T.mu;iOLink p =voidOutPutSMatrix_OL(CrossListT)i= 1;i=T.mu;iOLink p =j=1;j=T.nu;jif(p)&(j=p-coutsetw(3)e;p=p-coutsetw(3)cout CrossListM,N; / prepax= 1;xe=pb-e;p-i=pb-i;p-j=pb-if(NULLpa |pa- jpb-j) / 当M此行已经检查完或者pb因该放在pa 面if(NULL=pre-right= p-right=pa;pre=p; if

14、(NULL = M.che-j)/ 面if(NULL=pre-right= p-right=pa;pre=p; if(NULL = M.che-j)/ -j=p;p-down= hlp-j = p; if(NULLpa&pa-jpb-j)/ 如果此时的pbpa后面,则取以后的 pa 再来比较pre=pa;pa =pa-)/ pa-e+=pb-if(NULLpre) / a-i=pa-pre-right=pa-right; p = pa; pa = pa-right; -j = p)-j = hlp-jp-down; / 值 free(p);pb=pb-pa=pa-right;pb=pb- fr

15、ee(p);pb=pb-pa=pa-right;pb=pb-CrossListM,N; / prepax= 1;xe=pb-e;p-i=pb-i;p-j=pb-if(NULLpa |pa- jpb-j) / 当M此行已经检查完或者pb因该放在pa 面if(NULL=-i= pre-right=p-right=pa;pre=p; if(NULL = M.che-j)/ -j=p;p-down=pre-right=p-right=pa;pre=p; if(NULL = M.che-j)/ -j=p;p-down= hlp-j = p; if(NULLpa&pa-jpb-j)/ 如果此时的pbpa后面,则取以后的 pa 再来比较pre=pa;pa =pa-)/ pa-e-=pb-if(N

温馨提示

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

评论

0/150

提交评论