Y'a une faille : a la troisieme etape de ton algo, y'a une couille
Au niveau de l'ago recursif de GoldenCrystal, ca donnerai un truc dans le genre :
position = depart
do {
parcours(position);
position = orientation_not_set(); //donne une position dont on ne connait pas
// le sens d'un arc
while ( potision != NULL );
parcours(position) {
fils = voisins(position);
for (int i = 0 ; i < fils.size ; i++) {
if (fils[i]==depart) //on a fait le tour
return TRUE;
switch (orientation(position,fils[i]) {
case 0: //arc non traité
set_orientation(position,fils[i]);
if ( ! parcours(fils[i]) ) { //echec
reset_orientation(position,fils[i]);
continue; //on cherche sur le noeud suivant
} else { //succes
return TRUE;
}
break;
case 1: //deja traité et dans le bon sens
//on a reussi a retomber sur le circuit
return TRUE;
case -1: //on irait en sens contraire : noeud suivant
break;
}
if (i==fils.size) {
//tous les arcs ont été traités, c'est qu'on est revenu en arrière
return FALSE;
}
}