深度优先搜寻(DFS) C语言实现
2014-10-18 20:44
330 查看
伪代码
#define Black 2
#define Gray 1
#define White 0
#define Infinite -1
#define NIL -1
struct map{
int d;
int f;
int color;
int parent;
} vertix[100];
int time;
void DSF(int a[100][100],int n){
int i;
for(i = 0;i<n;i++){
vertix[i].color = White;
vertix[i].parent = NIL;
}
time = 0;
for(i = 0;i<n;i++)
if(vertix[i] == White)
DSFvisit(a,n,i);
}
void DSFvisit(int a[100][100],int n,int num){
int i;
vertix[num] = Gray;
time++;
vertix[num].d = time;
for(i = 0;i<n;i++)
if(a[num][i])
if(vertix[i].color == White){
vertix[i].parent = num;
DSFvisit(a,n,i);
}
time++;
vertix[num].f = time;
vertix[num].color = Black;
}
#define Black 2
#define Gray 1
#define White 0
#define Infinite -1
#define NIL -1
struct map{
int d;
int f;
int color;
int parent;
} vertix[100];
int time;
void DSF(int a[100][100],int n){
int i;
for(i = 0;i<n;i++){
vertix[i].color = White;
vertix[i].parent = NIL;
}
time = 0;
for(i = 0;i<n;i++)
if(vertix[i] == White)
DSFvisit(a,n,i);
}
void DSFvisit(int a[100][100],int n,int num){
int i;
vertix[num] = Gray;
time++;
vertix[num].d = time;
for(i = 0;i<n;i++)
if(a[num][i])
if(vertix[i].color == White){
vertix[i].parent = num;
DSFvisit(a,n,i);
}
time++;
vertix[num].f = time;
vertix[num].color = Black;
}
相关文章推荐
- 深度优先搜索DFS-C语言实现、思路/解析-简笔
- 图的深度优先遍历DFS (邻接矩阵实现) c语言
- 基于邻接矩阵实现的DFS深度优先搜索
- 第12周—项目3(1) 图遍历算法—实现深度优先遍历——DFS
- leetcode 526. Beautiful Arrangement 递归实现全排列 + 经典深度优先遍历DFS做法
- 基于邻接表实现的DFS深度优先搜索
- 第11周项目3-图遍历算法实现(深度优先DFS)
- 无向图 深度优先遍历 c语言实现
- 二叉树深度优先(DFS)和广度优先(BFS)算法的非递归实现
- Java实现数据结构之深度优先搜索DFS和广度优先搜索BFS
- 深度优先遍历 DFS C实现
- 深度遍历(DFS)与广度遍历(BFS) (C语言实现)
- 第十二周项目3--图遍历算法实现--实现深度优先遍历--DFS
- 深度优先DFS和广度优先BFS的非递归实现
- 图的邻接矩阵存储 深度优先遍历 广度优先遍历 C语言实现
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- BFS_DFS深度广度优先C++实现。
- 第12周项目3-(1)图遍历算法实现、实现深度优先遍历—DFS
- 图的遍历之-DFS深度优先遍历C++实现