DFS功能 - 这段代码有什么问题?

时间:2010-05-26 06:14:11

标签: c

你能告诉我这段代码有什么问题吗? 它无法使用

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");  
 }  
}  

1 个答案:

答案 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 ! ?