邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!---------------------------------------------------------------------------------------------------------------------------------------//邻接矩阵的建立和 其BFS, DFS, 遍历
#include <cstdio>
#include <cstdlib>
//#define _OJ_int visit[100];
int cnt = 0;
typedef struct Graph1
{int nv;int ne;int a[100][100];
} Graph1, *Graph;           //建立一个图含顶点, 边, 和邻接矩阵Graph
creat_graph(void)
{Graph g;int i, j;int v1, v2;g = (Graph) malloc (sizeof(Graph1));scanf("%d %d", &g->nv, &g->ne);for(i = 0;i < g->nv; i++) {for(j = 0;j < g->nv; j++) {g->a[i][j] = 0;}}                 //对邻结矩阵赋初始值for(i = 0;i < g->ne; i++) {scanf("%d %d", &v1, &v2);g->a[v1][v2] = 1;g->a[v2][v1] = 1;}               //建立一个无向矩阵return g;
}void
DFS(Graph g, int i)
{int j;// lif(cnt == g->nv - 1)// printf("%d\n", i);// else {             //此地有一个小技巧就是判断什么时候结束?// printf("%d ", i);  //用一个全局变量cnt 由于每一个点遍历一次// cnt++;            cnt == g->nv - 1 时结束;用此处理最后一个不要空格和换行// }printf("%d ", i);visit[i] = 1;for(j = 0;j < g->nv; j++) {if(g->a[i][j] == 1 && visit[j] == 0)DFS(g, j);}
}void
DFS_travers(Graph g)
{int i;for(i = 0;i < g->nv; i++)visit[i] = 0;for(i = 0;i < g->nv; i++) {if(visit[i] == 0)DFS(g, i);}
}typedef struct Queue1
{int top;int base;int *elem;
} Queue1, *Queue;Queue
creat_Queue(void)
{Queue q;q = (Queue) malloc (sizeof(Queue1));q->elem = (int*) malloc (100 * sizeof(int));q->base = q->top = 0;return q;
}int
isempty(Queue q)
{if(q->base == q->top)return 1;elsereturn 0;
}void
Enqueue(Queue q, int data)
{q->elem[q->top++] = data;
}int
Dequeue(Queue q)
{return q->elem[q->base++];
}void
BFS(Graph g, int v)
{int i, j;Queue q;q = creat_Queue();printf("%d ", v);visit[v] = 1;Enqueue(q, v);while (isempty(q) != 1) {i = Dequeue(q);for(j = 0;j < g->nv; j++) {if(g->a[i][j] && visit[j] == 0 ) {printf("%d ", j);   //把整排先全都遍历完,在遍历其它的visit[j] = 1;       //每次先遍历在入队Enqueue(q, j);}}}}void
BFS_travers(Graph g)
{int i;for(i = 0;i < g->nv; i++)visit[i] = 0;for(i = 0;i < g->nv; i++) {if(visit[i] == 0)BFS(g, i);}
}int main(int argc, char const *argv[]) {
#ifndef _OJ_  //ONLINE_JUDGEfreopen("input.txt", "r", stdin);
#endifGraph g;g = creat_graph();DFS_travers(g);printf("\n");BFS_travers(g);return 0;
}

转载于:https://www.cnblogs.com/airfand/p/5020420.html

邻结矩阵的建立和 BFS,DFS;;相关推荐

  1. 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)

    前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...

  2. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

    [问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...

  3. LeetCode 1263. 推箱子(BFS+DFS / 自定义哈希set)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 BFS + DFS 1. 题目 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置. 游戏地图用大小为 n * m 的网 ...

  4. LeetCode 1034. 边框着色(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色. 只有当两个网格块的颜色相同,而且在四个方向中任 ...

  5. 全局路径规划:图搜索算法介绍1(BFS/DFS)

    对于全局路径规划的设计,我们先要了解什么是图搜索,在此之前,要先知道什么是图: 可以看到,图有很多种,有无向图,有向图,节点之间还可以有不同的weight, 用于表述从节点与节点直接迁移的代价. 而图 ...

  6. 深度搜索 java_java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法...

    java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法 public class City { String name; int id; static int idCounter = ...

  7. 中南大学MATLAB变量专题/矩阵的建立1-3/4

    预定义变量 系统本定义的变量 ans默认赋值变量 i和j代表虚数单位 矩阵的建立 1.利用直接输入法建立矩阵 将矩阵的元素用中括号括起来,按矩阵行的输入顺序输入各元素,同一行的各元素之间用逗号或空格分 ...

  8. MATLAB矩阵的建立

    目录 1.前言 2.直接输入法建立矩阵 2.利用冒号表达式建立一个向量 3.linspace函数产生行向量 4.复数矩阵的建立 5.寄语 1.前言 本系列博客均以<<MATLAB程序设计教 ...

  9. MATLAB矩阵的建立与访问

    1.普通矩阵的建立 不管是任何矩阵(向量),都可以直接按照行方式输入每个元素:同一行的元素用逗号或者用空格符来分割,且空格个数不限:不同的行用分号分割.所有的元素都处于一方括号[]内.比如: > ...

最新文章

  1. 用于时序动作提名生成任务,爱奇艺提出BC-GNN图神经网络 | ECCV 2020
  2. 离开当前屏幕的判断方法_掌中宝系列之EMG电动门调整方法
  3. 如何在PHP中删除字符串中的所有空格? [重复]
  4. nginx四层端口转发
  5. HDU 4630 No Pain No Game 树状数组+离线操作
  6. 【调参实战】那些优化方法的性能究竟如何,各自的参数应该如何选择?
  7. UVA - 514:Rails
  8. python 调用gpu算力_数据科学家需要算力,GPU 如何实现?-控制器/处理器-与非网...
  9. Linux系统配置及服务管理_第03章用户管理
  10. 大容量nc文件解析_分布式文件系统浅谈
  11. 前端使用的字体中英文对照
  12. 领导越讲人情,团队越不行?
  13. Geometric tampering estimation by means of a sift-based forensic analysis论文阅读
  14. MacOS Big Sur Beta 测评|使用体验|有哪些BUG?|如何安装?|实际体验如何?|WWDC2020
  15. 利用springMVC实现购物车结算功能
  16. 论文阅读——(邬江兴院士) 网络空间内生安全综述 Cyberspace Endogenous Safety and Security
  17. 冬天买什么绒的四件套好用
  18. 解决input框上下偏移问题
  19. java车次信息_java实现根据起点终点和日期查询去哪儿网的火车车次和火车站点信息...
  20. Libra (介绍) 建立一个简单的全球货币和金融基础 (1)

热门文章

  1. java -cp 引用多个包_Java -cp 命令行引用多个jar包的简单写法(Windows、Linux)
  2. c++ class struct同名_相对于C语言,C++对struct做了非常多的扩充,功能更全面了
  3. vue-cli@2的原理解析
  4. CSAPP:第十一章 网络编程
  5. 【转】30种MySQL索引优化的方法
  6. [PAT乙级]数字分类 (20)
  7. tomcat,eclipse,sts绿色运行
  8. iOS屏幕尺寸和分辨率了解
  9. 每天一个JavaScript实例-动态省份选择城市
  10. IE(=8)版本不支持getElementsByClassName()