parcours en largeur dans un graphe
Salut.
Je galère pour faire un parcours en largeur, j'ai fait une file pour la gérer mais le programme ne s'arrête pas quand il est exécuté.Voici les fonctions et procédure BFS!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| /*--------------------------------------------------------------
--procedure bfs
--------------------------------------------------------------*/
void procedure_bfs (sommet pivot, File * file)
{
int res_file, vide, v_ordre, vide_1;
sommet x;
File * successeurs;
printf("fonction procedure");
res_file = enfiler(file, pivot);
if(res_file == 1){
pivot.marque = 1;
vide = est_vide(file);
while(vide == 1){
pivot = defiler(file);
ordre = ordre + 1;
v_ordre = ordre;
successeurs = remplir_succ(pivot); //renvoie les successeurs de pivot
vide_1 = est_vide(successeurs);
while( vide_1 == 1 ){
x = defiler(successeurs);
if(x.marque == 0){
enfiler(file, x);
x.marque = 1;
vide_1 = est_vide(successeurs);
}
}
}
}
}
/*----------------------------------------------------------
--fonction BFS
-----------------------------------------------------------*/
void fonction_bfs( sommet tableau[])
{
sommet pivot;
File *file;
int i;
printf("fonction bfs\n");
for(i = 0; i < nbr_sommet; i ++){
pivot = tableau[i];
pivot.marque = 0;
}
printf("fin marque \n");
file = creer_file();
for(i = 0; i < nbr_sommet; i ++)
pivot = tableau[i];
if(pivot.marque == 0){
procedure_bfs(pivot, file);
}
}
} |