//不能通过编译,没有引入队列头文件  1 #include<stdlib.h>
  2 #define MAX_VERTEX_NUM;
  3 typedef int infoType;
  4 typedef int vertexType;
  5
  6 typedef struct ArcNode{
  7     int adjvex;
  8     struct ArcNode *next;
  9     infoType *weight;
 10 }Arcnode;
 11
 12 typedef struct VNode{
 13     vertexType data;
 14     Arcnode *firstarc;
 15 }VNode;
 16
 17 //VNode G[MAX_VERTEX_NUM];
 18 void getdata(VNode v);
 19
 20 //图的创建
 21 void createGraph(int n,VNode G[]){
 22     int i,e;
 23     Arcnode *p,*q;
 24     printf("input the information of the vertex\n");
 25     for(i=0;i<n;i++){
 26         getdata(G[i]);
 27         G[i].firstarc=NULL;
 28     }
 29     for(i=0;i<n;i++){
 30         printf("create the edges for the %dth vertex\n",i);
 31         scanf("%d",&e);
 32         while(e!=-1){
 33             p=(Arcnode *)malloc(sizeof(Arcnode));
 34             p->next=NULL;
 35             p->adjvex=e;
 36             if(G[i].firstarc==NULL){
 37                 G[i].firstarc=p;
 38             }else{
 39                 q->next=p;
 40             }
 41             q=p;
 42             scanf("%d",&e);
 43         }
 44     }
 45 }
 46
 47 //图的遍历(1)--深度优先搜索
 48 void DFS(VNode g[],int v,int visited[]){
 49     int w;
 50     visit(v);
 51     visited[v]=1;
 52     w=FirstAdj(g,v);
 53     while(w!=-1){
 54         if(visited[w]==0)
 55         DFS(g,w,visited);
 56         w=nextAdj(g,v);
 57     }
 58
 59 }
 60
 61 void DFSGraph(VNode g[],int visited[],int n){
 62     int i;
 63     for(i=0;i<n;i++){
 64         visited[i]=0;
 65     }
 66     for(i=0;i<n;i++){
 67         if(visited[i]==0)
 68             DFS(g,i,visited);
 69     }
 70 }
 71
 72
 73 //图的遍历(2)--广度优先搜索
 74
 75 void BFS(VNode G[],int v,int visited[]){
 76     int w;
 77     visit(v);
 78     visited[v]=1;
 79     EnQueue(q,v);
 80     while(!emptyA(q)){
 81         Dequeue(&q,&v);
 82         w=FirstAdj(g,v);
 83         while(w!=-1){
 84             if(visited[w]==0){
 85                 visit(w);
 86                 EnQueue(q,w);
 87                 visited[w]=1;
 88             }
 89             w=NextAdj(g,v);
 90         }
 91     }
 92 }
 93
 94 void Travel_BFS(VNode g[],int visited[],int n){
 95     int i;
 96     for(i=0;i<n;i++){
 97         visited[i]=0;
 98     }
 99     for(i=0;i<n;i++){
100         if(visited[i]==0)
101             BFS(g,i,visited);
102     }
103 }

转载于:https://www.cnblogs.com/mozhuhao/p/4487652.html

图--广度优先遍历/深度优先遍历(c语言实现)相关推荐

  1. 【图数据结构的遍历】java实现广度优先和深度优先遍历

    [图数据结构的遍历]java实现广度优先和深度优先遍历 宽度优先搜索(BFS)遍历图需要使用队列queue数据结构: 深度优先搜索(DFS, Depth First Search)的实现 需要使用到栈 ...

  2. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  3. 图的遍历——深度优先遍历与广度优先遍历

    目录 何谓遍历? 图的遍历特点 图的遍历方式 深度优先搜索 过程分析 案例分析: 算法的代码实现 测试案例: 测试结果如下: 遍历非连通图 算法复杂度分析 额外补充 广度优先搜索 过程分析 辅助队列 ...

  4. 图 之遍历----深度优先遍历0.o

    何为深度优先遍历0.o呢?DFS是图论中的经典算法.其利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等. 基本思想:(一条路走到底 ...

  5. 邻接矩阵存储图并进行深度优先遍历

    内容: 采用邻接矩阵的形式存储图,进行图的深度优先遍历 步骤: 算法分析: 首先,图的邻接矩阵存储结构,就是用一维数组存储图中顶点的信息,用矩阵表示图中各顶点之间的邻接关系.假设图G=(V,E)有n个 ...

  6. 图 邻接矩阵的深度优先遍历

    void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ) {//访问当前位置 然后递归寻找//当前访问的是V这个结点if (!Visited[ ...

  7. 图的遍历——深度优先搜索+广度优先搜索

    一:图的遍历--深度优先搜索 在本文其他内容中只是大体概括了主要的图论内容,更加详细的代码实现及算法分析在此给出. 深度优先搜索(DFS)类似树的先序遍历. 假设初始状态是图中所有顶点未曾被访问,则深 ...

  8. 【图】深度优先遍历 广度优先遍历

    文章目录 一.广度优先遍历 二.深度优先遍历 深度优先遍历和广度优先遍历是遍历图的两种常见方式,接下来就通过这两种方式来实现一下图具体遍历的过程 当我位于游乐园的景区 A 时,为了玩遍所有的景区我们有 ...

  9. 超详细C语言版数据结构:图的深度优先遍历(推荐收藏)

    文章目录 一.邻接矩阵存储图的深度优先遍历过程分析 二.结果分析 三.C语言编程实现图的深度优先遍历 四.图的遍历及其应用 一.邻接矩阵存储图的深度优先遍历过程分析 对图1这样的无向图,要写成邻接矩阵 ...

最新文章

  1. 通过document id和content拿到SAP document的binary data
  2. Servlet规范定义的Servlet 生命周期
  3. c语言位运算+乘法,关于c语言中的位运算。。。
  4. IDEA工具开发必备设置-极大提高开发效率
  5. [百万级]通用分页存储过程.[千万级]实现千万级数据的分页显示!
  6. Java中JCP, JEP, JLS, JSR是什么
  7. MySQL忘记密码应当如何重置
  8. Spyder5.3.3无法使用下载好的库
  9. 日志管理系统,多种方式总结
  10. Nooploop空循环 TOFSense激光测距传感器 模块 红外测距测高
  11. 易居(个人中心资料修改+实名认证)
  12. 《明朝那些事儿》读后感
  13. 无法识别 移动固态硬盘_安上硬盘后不显示 千万别慌可能不是SSD坏了
  14. 小菜openstack nova 源码学习之 evacuate
  15. 亚马逊获20亿美元信用额度:有助新业务投资
  16. http://www.cnblogs.com/xinxin-csharp/p/6146770.html
  17. 互联网快讯:粉笔科技双核驱动实现突围;猿辅导以科技助力教育提质增效;抖音升级谣言专项治理
  18. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统官方下载入口v.20
  19. 【解救ROS】ubuntu下安装clion(含补ding传送门)
  20. linux命令行界面上滑,获得Linux命令行平滑体验的5条技巧

热门文章

  1. java中的随机生成算法_随机生成算法的java代码太复杂了
  2. 计算机视觉算法岗面经,2019秋招资料
  3. 如何使用scikit-learn工具来进行PCA降维
  4. 油漆面积 java_第八屆藍橋杯省賽 JavaA組 第十題 標題:油漆面積
  5. vc sleep不占进程_Python 中的进程深入
  6. qt mingw连接mysql_win下Qt连接MySql (mingw)
  7. pycharm的项目文件中包括什么_一个完整的项目管理流程包括什么?
  8. android UDP通信
  9. linux双系统安装nvidia,ubuntu 16.04(Windows 10双系统+grub引导)无法进入tt1~tt6(NVIDIA驱动安装相关-黑屏,login loop,分辨率)...
  10. Flutter教程(1)——快速预览