图遍历操作实验报告_第1页
图遍历操作实验报告_第2页
图遍历操作实验报告_第3页
图遍历操作实验报告_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、图遍历操作实验报告 实验报告 姓名: 班级: 12 南航网络 学号: 实验 题目 图的遍历操作 实验时间 2021-11-27 实验地点 指导教师 尚鲜莲 实验目的与要求: 目的:熟练掌握图的的两种存储结构;熟练掌握图的深度优先遍历和广度优先遍历算法;能解决简单的应用问题。 要求: 分别采用邻接矩阵和邻接表存储结构,完成图的深度优先遍历(dfs)和广度优先遍历(bfs)的操作。搞清楚 bfs 算法中队列的作用。 需求分析和实现功能说明: : 在 test4.c 中填写入相应语句,使之能顺利完成图的深度优先和广度优先遍历操作。测试数据为:无向图 gl,v=v0,v1,v2,v3,v4 ,e=(

2、v0,v3),(v1,v2),(v1,v3),(v1,v4),(v2,v4),(v3,v4),起始顶点为v0。 将空缺语句补充完整,并写出输出结果。 ) 算法设计(最好给出流程图): : 算法程序(源程序代码) #define vex_num 5 #define maxsize 10 #include stdio.h typedef char vextype; typedef struct vextype vexsvex_num; int arcsvex_numvex_num; mgraph; typedef struct vextype elemvex_num; int front,rear

3、; sueue; sueue q; int visitedvex_num=0; void creat_mgraph( mgraph *g,int e); void dfs_m( mgraph *g,int i); void bfs( mgraph *g,int k); void initqueue(sueue *sq); int enqueue(sueue *sq,vextype x); int delqueue(sueue *sq,vextype *y); int queueempty(sueue *sq); void main() int e,i,j; mgraph *g; printf(

4、qing shu ru wu xiang tu bian de shu mu); scanf(%d,e); creat_mgraph(g,e); printf(qing shu ru bian li de qi shi ding dian); scanf(%d,i); dfs_m(g,i); for (j=0;jvex_num;+j) visitedj=0; bfs(g,i); void creat_mgraph( mgraph *g,int e) int i,j,k; printf(shu ru ge ding dian xin xi:); for (i=0;ivex_num;+i) /*

5、scanf(%c,g-vexsi);*/ g-vexsi=getch(); for(i=0;ivex_num;+i) printf(%d %cn ,i,g-vexsi); /*getch();*/ for (i=0;ivex_num;+i) for (j=0;jvex_num;+j) g-arcsij=0; printf(shu ru ge bian de ding dian xu hao i,j:); for(k=0;ke;k+) scanf(%d,%d,i,j); g-arcsij=1;g-arcsji=1; /* creat_mgraph */ void dfs_m( mgraph *g

6、,int i) int j; printf(%3c,g-vexsi); visitedi=1; for (j=0;jvex_num;j+) if(g-arcsij=1) (!visitedj) dfs_m(g,j); /*dfs_m */ void bfs( mgraph *g,int k) int x,i,j; sueue *q; initqueue(q); printf(%3c,g-vexsk); visitedk=1; x=enqueue(q,g-vexsk); while(!queueempty(q) x=delqueue(q,g-vexsi); for(j=0;jvex_num;j+

7、) if(g-arcsij=1) (!visitedj) printf( %3c,g-vexsj); visitedj=1; x=enqueue(q, g-vexsj); /*bfs*/ void initqueue(sueue *sq) sq-front=sq-rear=0; /* initqueue*/ int enqueue(sueue *sq,vextype x) if( (sq-rear+1) % maxsize = sq-front) return 0; sq-elemsq-rear=x; sq-rear=(sq-rear+1) % maxsize; return 1; printf(sq-rear is :%dn,sq-rear); /* enqueue*/ int delqueue(sueue *sq,vextype *y) if(sq-front=sq-rear) return 0; *y=sq-elemsq-front; sq-front=(sq-front+1) % maxsize ; return 1; /* delqueue*/ int queueempty(sueue *sq) return (sq-front=sq-rear); 上机调试情况说明(包括调试数据、调试过程中遇到的问

温馨提示

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

评论

0/150

提交评论