Функция DFS - что не так с этим кодом? - PullRequest
1 голос
/ 26 мая 2010

Можете ли вы сказать мне, что не так с этим кодом? Не работает с

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 голосов
/ 26 мая 2010
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 ! ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...