我一直在研究图形中的 DFS 算法并陷入使用局部变量的困境。我有一个看起来像这样的代码:
#define MAX_VERTICES 50
typedef struck GraphType {
int n; // number of nodes
int adj_mat[MAX_VERTICES][MAX_VERTICES];
} GraphType;
int visited[MAX_VERTICES];
void insert_vertex(GraphType* g, int v) {
if (((g->n) + 1) > MAX_VERTICES) {
fprintf(stderr, "Graph: size of vertices ERROR");
return;
}
g->n++;
}
void insert_edge(GraphType* g, int start, int end) {
if (start >= g->n || end >= g->n) {
fprintf(stderr, "Graph: number of vertices ERROR");
return;
}
g->adj_mat[start][end] = 1;
g->adj_mat[end][start] = 1;
}
void dfs_mat(GraphType* g, int v) {
int w;
visited[v] = TRUE;
printf("vertex %d -> ", v);
for (w = 0; w < g->n; w++) {
if (g->adj_mat[v][w] && !visited[w])
dfs_mat(g, w);
}
int main(void) {
GraphType *g;
g = (GraphType*)malloc(sizeof(GraphType));
for (int i = 0; i < 4; i++)
insert_vertex(g, i);
insert_edge(g, 0, 1);
insert_edge(g, 0, 2);
insert_edge(g, 0, 3);
insert_edge(g, 1, 2);
dfs_mat(g, 0);
free(g);
return 0;
}
我想要做的是把访问过的[MAX_VERTICES]数组变成一个局部变量(这样我就可以把它作为参数提供给其他函数)。如何将其添加到主函数中并将其从全局使用中删除?也许通过使用指针?