你能告诉我这段代码有什么问题吗? 它无法使用
1 2
1 3
1 4
2 5
2 6
2 7
2 8
3 8
3 9
4 10
1 - > 4 - > 10并停止
DFS功能
void Is_Connected(graphType* g, int v){ //function to define the graph is connected or not
int i=0;
g_node* w;
top = NULL;
g -> visited[v] = TRUE;
push(v);
printf("%d", v);
while (top != NULL) {
w = g -> adjList[v];
while (w) {
if (!g -> visited[w -> vertex]) {
push(w -> vertex);
g -> visited[w -> vertex] = TRUE;
printf("->%d", w->vertex);
v = w -> vertex;
w = g -> adjList[v];
}
else {
w = w -> link;
}
}
i++;
v = pop();
}
if (i == (g -> x)-1){ //number of vertices = number of vertetices pass through
puts("\nIs_Connected() result : yes");
}
else{
puts("\nIs_Connected() result : no");
}
}
答案 0 :(得分:0)
top = NULL; ==> initialised to NULL
g -> visited[v] = TRUE;
push(v);
printf("%d", v);
while (top != NULL) ===> top is NULL always ( previous assignment is NULL).
Loop is not entered at all ! ?