程序填空题:深度优先遍历邻接表存储的图
```c
/* 深度优先遍历邻接表存储的图 Graph */
typedef int Vertex;
typedef struct AdjNode {
Vertex AdjV;
struct AdjNode *Next;
struct AdjNode *FirstEdge;
}AdjVNode;
typedef struct {
AdjVNode G[MAX];
}Graph;
typedef Graph* LGraph;
/* 邻接表存储的图 - DFS */
bool Visited[MAX];
typedef AdjVNode* PtrToAdjVNode;
void Visit( Vertex V )
{
printf("正在访问顶点%d\n", V);
}
/* Visited[]为布尔类型的全局数组,已经初始化为false */
void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) )
{
PtrToAdjVNode W;
Visit( V );
@@[Visited[V] = true](2);
for( W=Graph->G[V].FirstEdge; W; W=W->Next )
if ( !Visited[W->AdjV] )
@@[DFS( Graph, W->AdjV, Visit )](2);
}
```
答案:
第1空:Visited[V] = true
第2空:DFS( Graph, W->AdjV, Visit )
/* 深度优先遍历邻接表存储的图 Graph */
typedef int Vertex;
typedef struct AdjNode {
Vertex AdjV;
struct AdjNode *Next;
struct AdjNode *FirstEdge;
}AdjVNode;
typedef struct {
AdjVNode G[MAX];
}Graph;
typedef Graph* LGraph;
/* 邻接表存储的图 - DFS */
bool Visited[MAX];
typedef AdjVNode* PtrToAdjVNode;
void Visit( Vertex V )
{
printf("正在访问顶点%d\n", V);
}
/* Visited[]为布尔类型的全局数组,已经初始化为false */
void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) )
{
PtrToAdjVNode W;
Visit( V );
@@[Visited[V] = true](2);
for( W=Graph->G[V].FirstEdge; W; W=W->Next )
if ( !Visited[W->AdjV] )
@@[DFS( Graph, W->AdjV, Visit )](2);
}
```
答案:
第1空:Visited[V] = true
第2空:DFS( Graph, W->AdjV, Visit )