用c++代码写一个图的深度优先遍历
时间: 2023-03-15 14:50:49 浏览: 53
我可以用以下C语言代码来实现图的深度优先遍历: #include <stdio.h>
#include <stdlib.h>#define MAXV 1000 /* 最大顶点数 */
#define MAXDEGREE 50 /* 最大出度 */typedef struct {
int edges[MAXV+1][MAXDEGREE]; /* 邻接矩阵 */
int degree[MAXV+1]; /* 每个顶点的度 */
int nvertices; /* 顶点数 */
int nedges; /* 边数 */
} graph;void init_graph(graph *g, int n)
{
int i; /* 计数器 */
g->nvertices = n;
g->nedges = 0;
for (i=1; i<=n; i++) g->degree[i] = 0;
}void insert_edge(graph *g, int x, int y, int directed)
{
if (g->degree[x] > MAXDEGREE)
printf("Warning: insertion(%d,%d) exceeds max degree\n",x,y);
g->edges[x][g->degree[x]] = y;
g->degree[x] ++;
if (directed == 0)
insert_edge(g,y,x,1);
else
g->nedges ++;
}void dfs(graph *g, int v)
{
int i; /* 计数器 */
int w; /* 临时变量 */
printf("%d ",v);
visited[v] = 1;
for (i=0; i<g->degree[v]; i++) {
w = g->edges[v][i];
if (!visited[w]) dfs(g,w);
}
}