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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机实验报告经典.docx

1、计算机实验报告经典 中国矿业大学矿业工程学院实验报告课程名称 计算机软件设计基础姓名 黄开文 班级 采矿09-8班学号 01090253 日期 2011年10月成绩 教师 谢耀社 实验三:图的存储与遍历一:实验目的(1)掌握图的概念和相关术语;(2)掌握图的邻接矩阵和邻接链表表示;(3)掌握图的两种遍历方式:深度遍历和广度遍历。二:实验内容(1)使用邻接矩阵作为存储结构建立无向图;(2)使用邻接链表作为存储结构建立有向图;(3)以邻接链表为存储结构实现图有向图的深度遍历;(4)以邻接链表为存储结构实现有向图的广度遍历;三:实验程序及结果(1)邻接矩阵建立图:#include#include#d

2、efine VEXTYPE int /*顶点的类型设为整型*/#define MAXSIZE 100 /*数组最多存储单元为100*/#define ADJTYPE int /*边的类型为整型*/typedef struct VEXTYPE vexsMAXSIZE; /*一维数组存储顶点信息*/ ADJTYPE arcsMAXSIZEMAXSIZE; /*二维数组存储邻接矩阵*/ int vexnum,arcnum; /*顶点和边的数目*/MGRAPH;void create_graph(MGRAPH*g) int i,j,k; printf(输入顶点数和边数:); scanf(%d,%d,&

3、i,&j); g-vexnum=i; g-arcnum=j; for(i=1;ivexnum;i+) /*0单元空出不存储顶点的信息*/ printf(第%d个顶点的信息:,i); scanf(%d,&g-vexsi); for(i=1;ivexnum;i+) /*初始化邻接矩阵*/ for(j=1;jvexnum;j+) g-arcsij=0; for(k=1;karcnum;k+) printf(输入第%d条边的起点和终点的编号:,k); scanf(%d,%d,&i,&j); while(ig-vexnum|jg-vexnum) printf(编号超出范围,请重新输入!); scanf(

4、%d,%d,&i,&j); g-arcsij=1; g-arcsji=1; main() MGRAPH graph,*g; int i,j; g=&graph; create_graph(g); printf(顶点信息为:n); for(i=1;ivexnum;i+) /*输出顶点信息*/ printf(%d,g-vexsi); printf(n); printf(该图的邻接矩阵为:n); for(i=1;ivexnum;i+) /*输出邻接矩阵*/ for(j=1;jvexnum;j+) printf(%d,g-arcsij); printf(n); 结果:(2.)邻接链表建立图:#incl

5、ude#include#define MAXSIZE 100#define VEXTYPE inttypedef struct adjnode VEXTYPE adjvex; struct adjnode *next;ADJNODE;typedef struct VEXTYPE vertex; ADJNODE*link;VEXNODE;typedef struct VEXNODE adjlistMAXSIZE; int vexnum,arcnum;ADJGRAPH;void create_adjgraph(ADJGRAPH*g) /*用邻接链表建立有向图*/ int i,j,k; ADJNOD

6、E*p; printf(输入顶点数和边数:); scanf(%d,%d,&i,&j); g-vexnum=i; g-arcnum=j; for(i=1;ivexnum;i+) printf(请输入顶点的信息:); scanf(%d,&g-adjlisti.vertex); g-adjlisti.link=NULL; for(i=1;iarcnum;i+) printf(请输入第%d条边的起点和终点:,i); scanf(%d,%d,&j,&k); while(jg-vexnum|kg-vexnum) printf(编号超出范围,请重新输入!); scanf(%d,%d,&i,&j); p=(A

7、DJNODE*)malloc(sizeof(ADJNODE); p-adjvex=k; p-next=g-adjlistj.link; g-adjlistj.link=p; main() ADJGRAPH graph,*g; int i; ADJNODE*p; g=&graph; create_adjgraph(g); printf(该有向图的邻接链表为:n); for(i=1;ivexnum;i+) /*输出邻接链表*/ p=g-adjlisti.link; if(p!=NULL) printf(%3d|,g-adjlisti.vertex);阿 while(p!=NULL) printf(

8、-); printf(%5d,p-adjvex); p=p-next; printf(n); else printf(%3d|n,g-adjlisti.vertex); 结果:(3)广度优先遍历:(此程序用到队列的基本操作,写在头程序中了)源程序:#include#includeseqqueue.h#include#define MAXSIZE 100#define VEXTYPE inttypedef struct adjnode VEXTYPE adjvex; struct adjnode *next;ADJNODE;typedef struct VEXTYPE vertex; ADJNO

9、DE*link;VEXNODE;typedef struct VEXNODE adjlistMAXSIZE; int vexnum,arcnum;ADJGRAPH;void create_adjgraph(ADJGRAPH*g) /*用邻接链表建立图*/ int i,j,k; ADJNODE*p; printf(输入顶点数和边数:); scanf(%d,%d,&i,&j); g-vexnum=i; g-arcnum=j; for(i=1;ivexnum;i+) printf(请输入顶点的信息:); scanf(%d,&g-adjlisti.vertex); g-adjlisti.link=NU

10、LL; for(i=1;iarcnum;i+) printf(请输入第%d条边的起点和终点:,i); scanf(%d,%d,&j,&k); while(jg-vexnum|kg-vexnum) printf(编号超出范围,请重新输入!); scanf(%d,%d,&i,&j); p=(ADJNODE*)malloc(sizeof(ADJNODE); p-adjvex=k; p-next=g-adjlistj.link; g-adjlistj.link=p; int visitedMAXSIZE=0;void bfs(ADJGRAPH*g,int i) /*从顶点i开始进行广度优先搜索*/ A

11、DJNODE*p; SEQQUEUE*q,queue; int v; q=&queue; Init_Queue(q); visitedi=1; printf(%4d,g-adjlisti.vertex); Add_Queue(q,i); while(!Queue_Empty(q) v=Gethead_Queue(q); Del_Queue(q); p=g-adjlistv.link; while(p!=NULL) if(visitedp-adjvex=0) visitedp-adjvex=1; printf(%4d,g-adjlistp-adjvex.vertex); Add_Queue(q,

12、p-adjvex); p=p-next; main() ADJGRAPH*g,adjg; int i; g=&adjg; create_adjgraph(g); printf(广度遍历的结果:n); for(i=1;ivexnum;i+) if(visitedi!=1) bfs(g,i); printf(n);头程序:seqqueue.h#define datatype int#define MAXSIZE 100typedef struct datatype dataMAXSIZE; /*队列的最大存储空间*/ int front,rear; /*队头队尾指针*/SEQQUEUE;SEQQUEUE *q;void Init_Queue(SEQQUEUE*q) /*初始化队列*/ q-front=0; q-rear=0;int Queue_Empty(SEQQUEUE*q) /*判断队空操作*/ if(q-rear=q-front) return 1; else return 0;void Add_Queue(SEQQUEUE *q,datatype x) /*入队操作*/ if(q-rear+1)%MAXSIZE=q-front) printf(Queue fulln); else q-rear=(q-rear+1)%MAXSIZE; q-dataq-rear=x;

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

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