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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);
		}
	}
}