数据结构实验报告-DFS和BFS算法(共7页).doc
《数据结构实验报告-DFS和BFS算法(共7页).doc》由会员分享,可在线阅读,更多相关《数据结构实验报告-DFS和BFS算法(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上(规格为A4纸或A3纸折叠)佛山科学技术学院(用四号宋体)实 验 报 告(用小二号黑体)课程名称 数据结构实验 实验项目 实现DFS和BFS算法 专业班级 姓 名 学 号 指导教师 成 绩 日 期 (用小四号宋体) 一、目的与要求1、通过本实验,掌握图,无向图的基本概念,掌握图的遍历。 2、掌握图的深度优先搜索(DFS)与广度优先搜索(BFS)算法。二、实验原理图的遍历是图的算法中一种非常重要的算法,通过建立图的存储结构,采用深度优先搜索与广度优先搜索算法可以进行图的遍历。广度优先遍历与深度优先遍历的区别在于:广度优先遍历是以层为顺序,将某一层上的所有节点都搜索到了之
2、后才向下一层搜索;而深度优先遍历是将某一条枝桠上的所有节点都搜索到了之后,才转向搜索另一条枝桠上的所有节点。三、实验步骤1建立图的存储结构。2输入图的基本接点与信息,完成初始化图的工作。3完成图的深度优先搜索(DFS)和广度优先搜索算法,可以采用菜单形式进行显示与选择。(可以在键盘输入边的信息以构建一个无向图。以(a,b)的形式输入边的信息;对此无向图进行深度优先搜索,并输出正确的序列。)四、 源代码#include #include #define Max 20int visitedMax;struct queue/队列的结构体int *head;/指向所申请得到的空间的首地址int *fr
3、ont;/头指针,若队列不为空,指向队列头元素int *rear;/尾指针,若队列不空,指向队列尾元素的下一个位置int stacksize;/当前已分配的存储空间s;/-图的数组存储表示-struct Mgraphchar vexsMax;int arcsMaxMax;int vexnum,arcnum;G;int Locatevex(char v)/确定v在G中的位置int i,t;for(i=0;iG.vexnum;i+)if(G.vexsi=v) t=i;return(t);/-采用数组表示法,构造无向图G-void CreateUDG()int i,j,k;char v1,v2;pr
4、intf(请输入顶点数和弧数:);scanf(%d,%d,&G.vexnum,&G.arcnum);fflush(stdin);printf(请输入%d个顶点n,G.vexnum);for(i=0;iG.vexnum;i+)printf(请输入顶点%d: ,i);scanf(%c,&G.vexsi);fflush(stdin);for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+) G.arcsij=0;printf(请输入%d条弧n,G.arcnum);for(k=0;kG.arcnum;k+)printf(请输入弧%d: ,k);scanf(%c,%c,&v1
5、,&v2);fflush(stdin);i=Locatevex(v1);j=Locatevex(v2);G.arcsij=1;G.arcsji=1;/-返回v的第一个邻接顶点-int Firstadjvex(int v)int i; for(i=0;iG.vexnum;i+)if(G.arcsvi=1) return(i);i=-1;return(i);/-返回v的(相对于w的)下一个邻接顶点-int Nextadjvex(int v,int w)int i;for(i=0;iw) return(i);i=-1;return(i);/-从第v个顶点出发递归地深度优先遍历图G-void DFS(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 DFS BFS 算法
限制150内