/**
*2018.09.24 14:10
*DFS
*以邻接矩阵作为图的存储结构
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct Edge {
struct Edge *nextEdge;
int weight, sno;
}Edge;
typedef struct Vertex{
char e;
Edge *firstEdge;
}Vertex;
typedef struct Graph {
Vertex VNode[MAX];
int v_num, e_num;
}Graph;
void DFSTranverse(Graph g);
void DFS(Graph g, int v);
void tranverse(int v);
int main(void) {
putchar('\n');
system("pause");
return 0;
}
void DFSTranverse(Graph *g, int visit[]) {
int i;
for (i = 0; i < g->v_num; ++i)
visit[i] = 0;
for (i = 0; i < g->v_num; ++i)
if (visit[i] == 0)
DFS(g, i, visit);
}
void DFS(Graph *g, int v, int visit[]) {
visit[v] = 1;
tranverse(v);
Edge *edge = g->VNode[v].firstEdge;
while(edge != NULL) {
if (visit[edge->sno == 0])
DFS(g, edge->sno, visit);
edge = edge->nextEdge;
}
}
深度优先搜索
最新推荐文章于 2024-03-09 14:07:59 发布