实验要求:
以邻接矩阵或邻接表为存储结构,建立连通无向图或有向图,并完成以下操作:
(1) 深度优先遍历。
(2) 广度优先遍历。
实验代码:
#include<stdio.h> #include<malloc.h> #include<string.h> #define M 100 typedef struct node { char vex[M][2]; int edge[M ][ M ]; int n,e; }Graph;
int visited[M];
Graph *Create_Graph() { Graph *GA; int i,j,k,w; GA=(Graph*)malloc(sizeof(Graph));
printf ("请输入矩阵的顶点数和边数(用逗号隔开):\n"); scanf("%d,%d",&GA->n,&GA->e); printf ("请输入矩阵顶点信息:\n"); for(i = 0;i<GA->n;i++) scanf("%s",&(GA->vex[i][0]),&(GA->vex[i][1])); for (i = 0;i<GA->n;i++) for (j = 0;j<GA->n;j++) GA->edge[i][j] = 0; for (k = 0;k<GA->e;k++) { printf ("请输入第%d条边的顶点位置(i,j)和权值(用逗号隔开):",k+1); scanf ("%d,%d,%d",&i,&j,&w); GA->edge[i][j] = w; } return(GA); }
void dfs(Graph *GA, int v) { int i;
printf("%c%c\n",GA->vex[v][0],GA->vex[v][1]); visited[v]=1; for(i=0; i<GA->n; i |