#include<stdio.h>#define MAXVEXNUM 100#define MAX 10int visit[MAX];typedef char VertexType;typedef int EdgeType;typedef struct { VertexType Vertex[MAXVEXNUM]; EdgeType Edge[MAXVEXNUM][MAXVEXNUM]; int vexnum, edgenum;} MGraph;void CreatMGraph(MGraph *g) { //创建邻接矩阵 int i, j, k, w; printf("依次输入顶点,边的个数:\n"); scanf("%d%d", &g->vexnum, &g->edgenum); getchar(); printf("依次输入顶点信息:\n"); for (i = 0; i < g->vexnum; i++) { scanf("%c", &g->Vertex[i]); } getchar(); for (i = 0; i < g->vexnum; i++) { for (j = 0; j < g->vexnum; j++) { g->Edge[i][j] = 0; } } printf("按照(i,j,w)格式输入数据\n"); for (k = 0; k < g->edgenum; k++) { printf("第%d对", k + 1); scanf("%d%d%d", &i, &j, &w); g->Edge[i][j] = w; }}void DFS(MGraph g, int i) { int j; visit[i] = 1; printf("%c\n", g.Vertex[i]); for (j = 0; j < g.vexnum; j++) { if (g.Edge[i][j] == 1 && visit[j] == 0 ) { DFS(g, j); } }}void DFSTravel(MGraph g) { int i; for (i = 0; i < g.vexnum; i++) { visit[i] = 0; } for (i = 0; i < g.vexnum; i++) { if (visit[i] == 0) { DFS(g, i); } }}int main() { MGraph g; CreatMGraph(&g); DFSTravel(g); return 0;}