程序填空题:基于邻接矩阵表示的深度优先遍历
基于邻接矩阵表示的深度优先遍历。
```c
#include
#define MVNum 100
typedef struct{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}AMGraph;
int visited[MVNum];
void CreateUDN(AMGraph &G);//实现细节隐藏
void DFS(AMGraph G, int v){
printf("%c ",G.vexs[v]); visited[v] =1;
int w;
for(w = 0; w < G.vexnum; w++)
if((@@[G.arcs[v][w] != 0](2))&& (@@[!visited[w]](2)))
DFS(G, w);
}
void DFSTraverse(AMGraph G){
int v;
for(v = 0; v < G.vexnum; ++v)
visited[v] = 0;
for(v = 0; v < G.vexnum; ++v)
if(@@[!visited[v]](2))
@@[DFS(G, v)](2);
}
int main(){
AMGraph G;
CreateUDN(G);
DFSTraverse(G);
return 0;
}
```
答案:
第1空:G.arcs[v][w] != 0
第2空:!visited[w]
第3空:!visited[v]
第4空:DFS(G, v)
```c
#include
#define MVNum 100
typedef struct{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}AMGraph;
int visited[MVNum];
void CreateUDN(AMGraph &G);//实现细节隐藏
void DFS(AMGraph G, int v){
printf("%c ",G.vexs[v]); visited[v] =1;
int w;
for(w = 0; w < G.vexnum; w++)
if((@@[G.arcs[v][w] != 0](2))&& (@@[!visited[w]](2)))
DFS(G, w);
}
void DFSTraverse(AMGraph G){
int v;
for(v = 0; v < G.vexnum; ++v)
visited[v] = 0;
for(v = 0; v < G.vexnum; ++v)
if(@@[!visited[v]](2))
@@[DFS(G, v)](2);
}
int main(){
AMGraph G;
CreateUDN(G);
DFSTraverse(G);
return 0;
}
```
答案:
第1空:G.arcs[v][w] != 0
第2空:!visited[w]
第3空:!visited[v]
第4空:DFS(G, v)