深度优先算法和广度优先算法
介绍
- 介绍
- 图的定义
- 邻接表
- 邻接矩阵
- 广度优先算法
- 广度优先算法的实现
- 广度优先算法的应用
- 深度优先算法
- 深度优先算法的实现
- 后续
在数据结构中,树和图可以说是不可或缺的两种数据结构。其中,对于图来说,最重要的算法可以说就是遍历算法。而搜索算法中,最标志性的就是深度优先算法和广度优先算法。
图的定义图的定义普遍为两种,一种是邻接表,另一种是邻接矩阵。 图的邻接矩阵表示是唯一的,但对于邻接表来说,若边的输入次序不同生成的邻接表也不同。因此,对于同一个表,基于邻接矩阵的遍历所得到的BFS序列和DFS序列是不唯一的,基于邻接表的遍历所得到的BFS和DFS是唯一的。
邻接表#define MXNUM 100
typedef char VertexType;
typedef int EdgeType;
typedef struct VNode
{
VertexType data;
ArcNode *first;
}VNode,AdjList[MXNUM];
typedef struct{
AdjList vertics;
int vexnum,arcnum;
}ALGraph;
邻接矩阵
#define MXNUM 100
typedef char VertexType;
typedef int EdgeType;
typedef struct
{
VertexType Vex[MXNUM];
EdgeType Edge[MXNUM][MXNUM];
int Vexnum,Edgenum;
}MGraph;
typedef struct ArcNode{
int adjvex;
struct ArcNode *next;
}ArcNode;
广度优先算法
广度优先算法的实现
广度优先算法是一种分层的查找过程,每向前走一步可能会访问一批顶点,不像深度优先搜索算法那样有回溯的情况,因此它不是一个递归的算法。为了实现逐层访问,算法必须借助一个辅助队列,以记忆正在访问的顶点的下一层顶点。
void BFSTraverse(MGraph G)
{
int i;
for(i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?