实现基于邻接矩阵表示的深度优先遍历。
函数接口定义: void DFS(Graph G, int v);
其中 G 是基于邻接矩阵存储表示的无向图,v表示遍历起点。。
裁判测试程序样例:
#include
#include
#define MVNum 10
int visited[MVNum];
typedef struct{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}Graph;
void CreateUDN(Graph &G);//实现细节隐藏
void DFS(Graph G, int v);
void DFSTraverse(Graph G){
int v;
for(v = 0; v < G.vexnum; ++v) visited[v] = 0;
for(v = 0; v < G.vexnum; ++v)
if(!visited[v]) DFS(G, v);
}
int main(){
Graph G;
CreateUDN(G);
DFSTraverse(G);
return 0;
}
输入样例:
输入第1行为结点数vexnum和边数arcnum。第2行为结点的值,依次输入arcnum行,每行输入两个结点的值表示该两个结点互为邻接点。
8 8 ABCDEFGH A B A C B D B E C F C G D H E H
输出样例:
遍历序列。
A B D H E C F G
代码如下:
void DFS(Graph G, int v)
{
int i;
visited[v]=1;
printf("%c ",G.vexs[v]);
for(i=0;i



