图的DFS和BFS供参习.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的DFS和BFS供参习

课程设计的目的 (1) 熟练使用 C ++语言编写程序,解决实际问题; 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和 设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试 等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2.需求分析 图1-1 程序流程图 DFS和BFS问题的设计 BFS的思想: 从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1、V2、……Vn,然后依次访问与V1、V2……Vn相邻且未被访问的顶点。如此继续,找到所要找的顶点或者遍历完整个图。 由此可以看出,用BFS进行有哪些信誉好的足球投注网站所有哪些信誉好的足球投注网站的顶点都是按深度进行扩展的,先找到到V0距离为1的所有顶点,然后找到距离V0为2的顶点……所以BFS所有哪些信誉好的足球投注网站到的都是最短的路径。 由于要将距离V0为d(d0)的且未被方位的点都记录起来,我们采用队列这种数据结构。队列的特点是先进先出(FIFO),从某个顶点出发,记此顶点已访问标记,然后依次有哪些信誉好的足球投注网站和此顶点相邻的且未被访问的顶点,将其加入队列,并置已访问标记,重复此步骤,直到找到需要有哪些信誉好的足球投注网站的顶点或者所有的顶点都被访问为止 DFS的思想: 顾名思义,深度优先有哪些信誉好的足球投注网站所遵循的策略就是尽可能“深”的在图中进行有哪些信誉好的足球投注网站,对于图中个顶点V,如果它还有相邻的顶点(在有向图中就是还有以V为起点的边)且未被访问,则访问此顶点。如果找不到,则返回到上一个顶点。这一过程一直进行直到所有的顶点都被访问为止。 DFS可以有哪些信誉好的足球投注网站出从某一个顶点到另外的一个顶点的所有路径。 调试分析 6、参考文献 [1] 严蔚敏,吴伟民 编著. 数据结构(C 语言版)--北京: 清华大学出版社,2007.2 [2]严蔚敏,吴伟民 米 宁 编著. 数据结构题集(C 语言版)--北京: 清华大学出版社, 2007.3 [3]网上有哪些信誉好的足球投注网站相关程序作为参考 附录: #include iostream #define MAXSIZE 100 //设置最大顶点数 #include queue using namespace std; typedef queueint QUEUE; templateclass T //定义一个图的类模板 class Graph { public: void CreateGraph(T a[],int n,int e); //创建图的邻接矩阵 void DFS(int v); //深度优先有哪些信誉好的足球投注网站函数 void BFS(int v); int locate(T x,T a[],int n); //查找输入顶点在顶点数组中的位置 private: T vertex[MAXSIZE]; //顶点集 int arc[MAXSIZE][MAXSIZE]; //邻接矩阵 int vNum,arcNum; //顶点数,边数 }; templateclass T int GraphT::locate(T x,T a[],int n) { for(int i=0;in;i++) { if(x==a[i]) return i; } } templateclass T void GraphT::CreateGraph(T a[],int n,int e) { int i,j,k; T v1,v2; vNum=n; arcNum=e; for(i=0;in;i++) vertex[i]=a[i]; for(i=0;in;i++) { for(j=0;jn;j++) arc[i][j]=0; //初始化邻接矩阵 } for(k=0;ke;k++) { cout输入e条边endl; cinv1v2; //输入e条边 arc[locate(v1,a,n)][locate(v2,a,n)]=1; //矩阵对应位置设为1,无向图为一对称矩阵 arc[locate(v2,a,n)][locate(v1,a,n)]=arc[locate(v1,a,n)][locate(v2,a,n)]; } } bool visited[MAXSIZE]={0}; //初始化访问标志数组 templateclass T void GraphT::DFS(int v) //深度优先遍历的具体实现 { int i; coutvertex[v]; visited[v]=1; for(i=0;ivNum;i++) { if(arc[v][i]==1visited[i]==0) //找到第一个与顶点vertex[v]相连并且没有被访问过的顶点,递归遍历 DFS(i); } } bool visited1[MAXSIZE]={0}; //???始化访问标志数组 tem

文档评论(0)

ustt002 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档