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
| import java.util.*;
public class Cheminement extends Graphe{
//Vecteur dans lequel je stock mon chemin
private Vector<Integer> tab= new Vector<Integer>();
//tableau de boolean pour marquer un sommet et savoir s'il a déjà été visité
private boolean [] marque = new boolean[1000];
public void chemins(Graphe g, int depart, int arrivee){
int courant = depart;
for(int i=0; i<g.nbSommet(); i++){
marque[i] = false;
}
//Une pile P qui se rempli et se vide au fur et à mesure et permet de sortir de ma boucle while
Stack<Integer> P = new Stack<Integer>();
marque[depart] = true;
P.push(depart);
while(!(P.isEmpty()) && courant!=arrivee){
courant = P.pop();
tab.add(courant);
for(int i=0; i<g.lst_succ(courant).length; i++){
if(marque[g.lst_succ(courant)[i]] == false){
P.push(g.lst_succ(courant)[i]);
marque[g.lst_succ(courant)[i]] = true;
}//fsi
}//fpour
}//fwhile
}//CheminHami
public java.lang.String toString(){
String str = "chemin : { ";
for(int i=0; i<tab.size(); i++){
str+= tab.get(i) + ", ";
}
str+="}";
return str;
}
public static void main(String[] args) {
Cheminement c1 = new Cheminement();
int A = Graphe.Alpha_NotDef; //Permet de dire qu'il n'y a pas d'arc entre les sommets
int [][]mat = {{A,2,2,A,A,A}, {A,A,A,A,2,A}, {A,2,A,2,A,A}, {A,A,A,A,A,2},{A,A,2,2,A,A}, {A,A,A,A,2,A}}; //Matrice d'adjacence de mon graphe g
Graphe g = new Graphe(mat); //Mon graphe g construit avec le constructeur par matrice
c1.chemins(g, 0, 5);
System.out.println(c1);
}
} |
Partager