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
| #include <stdio.h>
// Procédure qui recherche le plus court chemin depuis un sommet de référence
// Paramètres :
// adjacence : matrice dadjacence du graphe
// ordre : nombre de sommets
// s : numéro de sommet de référence
// l : tableau dynamique alloué des longueurs minimales des sommets depuis s
// pred : tableau dynamique alloué des prédécesseurs des sommets
void plusCourtChemin (int**adjacence, int ordre, int s, int *l, int *pred) { // Variables locales
int *marques ;
int x, y ;
t_file *f ;
// Allouer le tableau marques de taille « ordre »
*p = malloc(sizeof(int) * ordre);
// Initialiser les marquages et les longueurs minimales à 0
for (x=0 ; x<ordre ; x++) {
marques[x] = 0 ;
l[x] = 0 ;
}
// Marquer le sommet s à 1
marques[s] = 1 ;
// Créer (allouer) la file f et enfiler s dans f
... (pas trouvé)
while (
) { // Tant que la file f nest pas vide
// Défiler le premier sommet x de la file f (PAS TROUVé)
// Pour tous les sommets y adjacents à x et non marqués
for (y=0 ; y<ordre ; y++)
if (adjacence[x][y] && !marques[y]) {
marques[y] = 1 ; // marquer le sommet y
(PAS TROUVE) // enfiler le sommet y dans f
pred[y] = x ; // x est le prédécesseur de y
l[y] = l[x]+1 ; // incrémenter la longueur de y
}
}
} |
Partager