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
 
#ifndef _GRAPHE__H
#define _GRAPHE__H
 
 
#include "CodesErreur.h"
 
typedef enum {Pret, Attente, Visite} EtatNd; /*Pret: ville non encore visitée. Attente: ville a été enfilée. Visite: ville a été visitée*/
 
typedef struct TNoeud Ville;		/*Pour representer un noeud dans un graphe*/
typedef struct TArete Ligne;		/*Pour representer une arete d'un graphe*/
 
typedef Ville VilleOrig;
typedef Ville VilleDest;
 
struct TArete					/*Pour representer une arete d'un graphe*/
{
	VilleOrig *ptrVilleOrig;	/*Un pointeur sur la ville d'origine*/
	VilleDest *ptrVilleDest;	/*Un pointeur sur la ville de destination*/
	double tempsVol;	/*Le temps du vol (en heures) entre les deux villes reliées par l'arete*/
	struct TArete *suivDest;	/*La prochaine adjacence du noeud (sur une rangée)*/
	struct TArete *suivOrig;	/*La prochaine adjacence du noeud (sur une colonne)*/
};
 
struct TNoeud			/*Pour representer un noeud dans un graphe*/
{
	int numero;					/*Le nom de la ville representee par le noeud*/
	Ligne *listeAretes;	/*La liste des aretes entre le noeud et les noeuds qui lui sont adjacents*/
	EtatNd etat;			/*L'état du noeud (pour la recherche par contagion)*/
	struct TNoeud *precedent;	/*Le noeud précédent de la liste*/
	struct TNoeud *suivant;		/*Le prochain noeud de la liste*/
};
 
typedef struct			/*Pour representer un graphe, ainsi que toutes les infos necessaires*/
{
	int nbNoeuds;				/*Le nombre de noeuds qui constituent le graphe*/
	VilleOrig *vOrig;			/*Pointeur sur les noeuds du graphe (noeuds d'origine)*/
	VilleDest *vDest;			/*Pointeur sur les noeuds du graphe (noeuds de destination)*/
} Graphe;
 
#endif
commant je peux vérifier s'il est possible d'etablir un chemain entre la vile origine et la ville destination
le protot de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Bool chemainExiste(Graphe gr,int originen,int destination ,int *err)
{
 
}
est ce que je peux le faire avec l'algorithme de warshall ?