ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:56.07KB ,
资源ID:8820809      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8820809.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构矩阵实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构矩阵实验报告.docx

1、数据结构矩阵实验报告一、实验目的和要求(1)掌握各种特殊矩阵如对称矩阵、上下三角矩阵和对角矩阵的压缩存储方法。(2)掌握稀疏矩阵的各种存储结构以及基本运算实现算法。(3)掌握广义表的递归特性、存储结构以及基本运算实现算法。二、实验环境、内容和方法实验内容: 打开Visual C+6.0并输入实验指导书上的程序,并进行调试和运行。 自行尝试编写第六个实验。实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。(三)根据实验内容,编译程序。实验环境:Windows xp Visual C+6

2、.0三、实验过程描述实验 以下是一个5*5阶的螺旋方阵。设计一个程序输出该形式的n*n阶方阵。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 714 23 22 21 813 12 11 10 9一、打开Visual C+6.0并输入如下程序#include #define MaxLen 10void fun(int aMaxLenMaxLen,int n) int i,j,k=0,m; if (n%2=0) m=n/2; else m=n/2+1; for (i=0;im;i+) for (j=i;jn-i;j+) k+; aij=k; for (j=i+1;j=i

3、;j-) k+; an-i-1j=k; for (j=n-i-2;j=i+1;j-) k+; aji=k; void main() int n,i,j; int aMaxLenMaxLen; printf(n); printf(输入n(n10):); scanf(%d,&n); fun(a,n); printf(%d阶数字方阵如下:n,n); for (i=0;in;i+) for (j=0;jn;j+) printf(%4d,aij); printf(n); printf(n);二、,编译并连接此程序,如图三、运行此程序,如图实验 假设n*n的稀疏矩阵A采用三元组表示,设计一个程序实现如下功

4、能:(1)生成如下两个稀疏矩阵的三元组a和b:a:1 0 3 0 b: 3 0 0 00 1 0 0 0 4 0 00 0 1 0 0 0 1 00 0 1 1 0 0 0 2(2)输出a转置矩阵的三元组(3)输出a+b的三元组(4) 输出a*b的三元组一、输入如图所示程序#include #define N 4typedef int ElemType;#define MaxSize 100 typedef struct int r; int c; ElemType d; TupNode;typedef struct int rows; int cols; int nums; TupNode

5、dataMaxSize; TSMatrix;void CreatMat(TSMatrix &t,ElemType ANN) int i,j; t.rows=N;t.cols=N;t.nums=0; for (i=0;iN;i+) for (j=0;jN;j+) if (Aij!=0) t.datat.nums.r=i;t.datat.nums.c=j; t.datat.nums.d=Aij;t.nums+; void DispMat(TSMatrix t) int i; if (t.nums=0) return; printf(t%dt%dt%dn,t.rows,t.cols,t.nums);

6、 printf(t-n); for (i=0;it.nums;i+) printf(t%dt%dt%dn,t.datai.r,t.datai.c,t.datai.d);void TranMat(TSMatrix t,TSMatrix &tb) int p,q=0,v; tb.rows=t.cols;tb.cols=t.rows;tb.nums=t.nums; if (t.nums!=0) for (v=0;vt.cols;v+) for (p=0;pt.nums;p+) if (t.datap.c=v) tb.dataq.r=t.datap.c; tb.dataq.c=t.datap.r; t

7、b.dataq.d=t.datap.d; q+; int MatAdd(TSMatrix a,TSMatrix b,TSMatrix &c) int i=0,j=0,k=0; ElemType v; if (a.rows!=b.rows | a.cols!=b.cols) return 0; c.rows=a.rows;c.cols=a.cols; while (ia.nums & jb.nums) if (a.datai.r=b.dataj.r) if(a.datai.cb.dataj.c) c.datak.r=b.dataj.r; c.datak.c=b.dataj.c; c.datak.

8、d=b.dataj.d; k+;j+; else v=a.datai.d+b.dataj.d; if (v!=0) c.datak.r=a.datai.r; c.datak.c=a.datai.c; c.datak.d=v; k+; i+;j+; else if (a.datai.rb.dataj.r) c.datak.r=a.datai.r; c.datak.c=a.datai.c; c.datak.d=a.datai.d; k+;i+; else c.datak.r=b.dataj.r; c.datak.c=b.dataj.c; c.datak.d=b.dataj.d; k+;j+; c.

9、nums=k; return 1;int value(TSMatrix c,int i,int j) int k=0; while (kc.nums & (c.datak.r!=i | c.datak.c!=j) k+; if (kc.nums) return(c.datak.d); else return(0);int MatMul(TSMatrix a,TSMatrix b,TSMatrix &c) int i,j,k,p=0; ElemType s; if (a.cols!=b.rows) return 0; for (i=0;ia.rows;i+) for (j=0;jb.cols;j

10、+) s=0; for (k=0;ka.cols;k+) s=s+value(a,i,k)*value(b,k,j); if (s!=0) c.datap.r=i; c.datap.c=j; c.datap.d=s; p+; c.rows=a.rows; c.cols=b.cols; c.nums=p; return 1;void main() ElemType a1NN=1,0,3,0,0,1,0,0,0,0,1,0,0,0,1,1; ElemType b1NN=3,0,0,0,0,4,0,0,0,0,1,0,0,0,0,2; TSMatrix a,b,c; CreatMat(a,a1);

11、CreatMat(b,b1); printf(a的三元组:n);DispMat(a); printf(b的三元组:n);DispMat(b); printf(a转置为cn); TranMat(a,c); printf(c的三元组:n);DispMat(c); printf(c=a+bn); MatAdd(a,b,c); printf(c的三元组:n);DispMat(c); printf(c=a*bn); MatMul(a,b,c); printf(c的三元组:n);DispMat(c);二、程序运行结果如图实验 编写一个程序实现广义表的各种运算,并在此基本上设计一个程序完成如下功能:(1)建

12、立广义表g=“(b,(b,a,(#),d),(a,b),c,(#)”的链式存储结构;(2)输出广义表g的长度;(3)输出广义表g的深度;(4)输出广义表g的最大原子;一、输入如图所示程序#include #include typedef char ElemType;typedef struct lnode int tag; union ElemType data; struct lnode *sublist; val; struct lnode *link; GLNode;GLNode *CreatGL(char *&s) GLNode *h; char ch; ch=*s+; if (ch!

13、=0) h=(GLNode *)malloc(sizeof(GLNode); if (ch=() h-tag=1; h-val.sublist=CreatGL(s); else if (ch=) h=NULL; else h-tag=0; h-val.data=ch; else h=NULL; ch=*s+; if (h!=NULL) if (ch=,) h-link=CreatGL(s); else h-link=NULL; return h;int GLLength(GLNode *g) int n=0; g=g-val.sublist; while (g!=NULL) n+; g=g-l

14、ink; return n;int GLDepth(GLNode *g) int max=0,dep; if (g-tag=0) return 0; g=g-val.sublist; if (g=NULL) return 1; while (g!=NULL) if (g-tag=1) dep=GLDepth(g); if (depmax) max=dep; g=g-link; return(max+1); void DispGL(GLNode *g) if (g!=NULL) if (g-tag=1) printf(); if (g-val.sublist=NULL) printf(); el

15、se DispGL(g-val.sublist); else printf(%c, g-val.data); if (g-tag=1) printf(); if (g-link!=NULL) printf(,); DispGL(g-link); void main() GLNode *g; char *str=(b,(b,a,a),(a,b),c); g=CreatGL(str); printf( 广义表g:);DispGL(g);printf(n); printf( 广义表g的长度:%dn,GLLength(g); printf( 广义表g的深度:%dn,GLDepth(g); printf(n);二、程序运行结果如图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1