图的深度优先搜索实验
实验内容
1.采用邻接矩阵表示法创建下图并输出它。
2. 对下图进行深度优先搜索遍历(1为起始点)。
#include<stdio.h> #include<stdlib.h> #define MaxSize 100 typedef struct { int vex[MaxSize]; int acrs[MaxSize][MaxSize]; int vexnum; int acrsnum; }Graph; void createGraph(Graph *G) { scanf("%d,%d", G->vexnum, G->acrsnum); for (int i = 0; i < G->vexnum; i++) { int e; scanf("%d", &e); G->vex[i] = e; } for (int i = 0; i < G->vexnum; i++) { for (int j = 0; j < G->vexnum; j++) { G->acrs[i][j] = 0; } } for (int i = 0; i < G->acrsnum; i++) { int a, b; scanf("%d,%d", &a, &b); G->acrs[a][b] = 1; } } void dfs(Graph G,int v,int *flag) { flag[v] = 1; for (int i = 0; i < G.vexnum; i++) { if (G.acrs[v][i] == 1 && flag[i] == 0) { dfs(G, i,flag); } } } int main() { Graph G; createGraph(&G); int* flag = (int*)malloc(sizeof(int) * G.vexnum); for (int i = 0; i < G.vexnum; i++) { flag[i] = 0; } int v = 1; dfs(G, v, flag); }
好了,我们下回见,peace