6-4 实现基于邻接矩阵表示的深度优先遍历
函数接口定义:
void DFS(Graph G, int v);
其中 G
是基于邻接矩阵存储表示的无向图,v
表示遍历起点。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> #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
标签:优先,遍历,int,Graph,void,MVNum,DFS,邻接矩阵,visited From: https://blog.csdn.net/2401_84341430/article/details/144776037void DFS(Graph G, int v)
{
visited[v]=true;
printf("%c ", G.vexs[v]); // 访问当前顶点
int w;
for(w=0;w<G.vexnum;w++)
{
if(G.arcs[v][w]==1&&!visited[w])
DFS(G,w);
}
}