Graphes
0.1
|
structures de base pour la manipulation de graphes Plus de détails...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
Aller au code source de ce fichier.
Classes | |
struct | cell |
structure de cellule pour les listes chaînees de successeurs. Plus de détails... | |
struct | graphe |
structure pour la representation des graphes Plus de détails... | |
Définitions de type | |
typedef struct cell | cell |
typedef cell * | pcell |
pointeur sur une cellule | |
typedef struct graphe | graphe |
Fonctions | |
void | AfficheEnsemble (boolean *s, int n) |
affiche à l'écran l'ensemble representé par le tableau de booléens s. Plus de détails... | |
void | AfficheListe (pcell p) |
affiche le contenu de la liste p. Plus de détails... | |
void | AfficheSuccesseurs (graphe *g) |
affiche le graphe dans sa représentation "listes de successeurs". Plus de détails... | |
void | AfficheArcs (graphe *g) |
affiche le graphe dans sa représentation "listes d'arcs". Plus de détails... | |
void | AfficheValeursSommets (graphe *g) |
affiche les valeurs associées aux sommets. Plus de détails... | |
void | PSGraphe (graphe *g, char *filename, double r, double t, double marge) |
génère une figure PostScript d'après la représentation "successeurs" du graphe g. Plus de détails... | |
void | EPSGraphe (graphe *g, char *filename, double r, double t, double marge, int noms_sommets, int v_sommets, int col_sommets, int v_arcs) |
génère une figure PostScript d'après la représentation "successeurs" du graphe g. Plus de détails... | |
void | AutoNomsSommets (graphe *g, int mode) |
génère automatiquement des noms pour les sommets du graphe g. Plus de détails... | |
void | PlongementCirculaire (graphe *g, double r) |
affecte à chaque sommet des coordonnées (x,y) régulierement réparties sur un cercle. Plus de détails... | |
void | PlongementRadial (graphe *g, int c) |
répartit les sommets de g sur des cercles concentriques en fonction de leur rang, avec le sommet c au centre. Plus de détails... | |
pcell | AlloueCell (pcell *plibre) |
retire la premiere cellule de la liste pointée par plibre et retourne un pointeur sur cette cellule. Plus de détails... | |
void | LibereCell (pcell *plibre, pcell p) |
insère la cellule p au début de la liste pointée par 'plibre'. Plus de détails... | |
void | RetireTete (pcell *plibre, pcell *pliste) |
retire la première cellule de la liste 'pliste'. La cellule est chaînee à la liste 'plibre'. Plus de détails... | |
void | AjouteTete (pcell *plibre, pcell *pliste, int a, TYP_VARC v) |
ajoute une cellule contenant le sommet 'a' et la valeur 'v' en tête de la liste 'pliste'. La cellule est prise dans la liste 'plibre'. Plus de détails... | |
int | EstDansListe (pcell p, int a) |
retourne 1 si le sommet 'a' se trouve dans la liste 'p', 0 sinon. Plus de détails... | |
graphe * | InitGraphe (int nsom, int nmaxarc) |
alloue la memoire nécessaire pour représenter un graphe a 'nsom' sommets, possédant au maximum 'nmaxarc' arcs. Retourne un pointeur sur la structure allouée. Plus de détails... | |
void | TermineGraphe (graphe *g) |
libère la memoire occupée par le graphe g. Plus de détails... | |
graphe * | ReadGraphe (char *filename) |
Lit les données d'un graphe dans le fichier filename, retourne un pointeur sur la structure graphe construite. Plus de détails... | |
void | AjouteArc (graphe *g, int i, int s) |
ajoute l'arc (i,s) au graphe g (application gamma seulement). Plus de détails... | |
void | AjouteArcValue (graphe *g, int i, int s, TYP_VARC v) |
ajoute l'arc (i,s) au graphe g (application gamma seulement). Plus de détails... | |
void | RetireArc (graphe *g, int i, int s) |
retire l'arc (i,s) du graphe g (application gamma seulement), si celui-ci etait présent. Sinon, pas d'action. Plus de détails... | |
int | PopSuccesseur (graphe *g, int i) |
retire un arc (i,s) du graphe g (application gamma seulement), et retourne le sommet s Plus de détails... | |
int | EstSuccesseur (graphe *g, int i, int s) |
retourne 1 si le sommet 's' est un successeur du sommet 'i', 0 sinon. Plus de détails... | |
graphe * | GrapheAleatoire (int nsom, int narc) |
retourne un graphe aléatoire à 'nsom' sommets et 'narc' arcs. Le graphe est antisymétrique et sans boucle. Le nombre d'arcs doit être <= nsom (nsom - 1) / 2. Les arcs sont pondérés (valeur aléatoire entre 0.0 et 1.0). Plus de détails... | |
graphe * | Symetrique (graphe *g) |
structures de base pour la manipulation de graphes
void AfficheArcs | ( | graphe * | g | ) |
affiche le graphe dans sa représentation "listes d'arcs".
g | (entrée) : un graphe. |
Références graphe::narc, graphe::queue, graphe::tete, et graphe::v_arcs.
void AfficheEnsemble | ( | boolean * | s, |
int | n | ||
) |
affiche à l'écran l'ensemble representé par le tableau de booléens s.
s | (entrée) : un tableau de valeurs booléennes. |
n | (entrée) : la taille du tableau. |
void AfficheListe | ( | pcell | p | ) |
affiche le contenu de la liste p.
p | (entrée) : une liste chaînee de successeurs. |
Références cell::next, et cell::som.
Référencé par AfficheSuccesseurs().
void AfficheSuccesseurs | ( | graphe * | g | ) |
affiche le graphe dans sa représentation "listes de successeurs".
g | (entrée) : un graphe. |
Références AfficheListe(), graphe::gamma, et graphe::nsom.
void AfficheValeursSommets | ( | graphe * | g | ) |
affiche les valeurs associées aux sommets.
g | (entrée) : un graphe. |
Références graphe::nsom, et graphe::v_sommets.
void AjouteArc | ( | graphe * | g, |
int | i, | ||
int | s | ||
) |
ajoute l'arc (i,s) au graphe g (application gamma seulement).
g | (entrée/sortie) : un graphe. |
i | (entrée) : extrémité initiale de l'arc. |
s | (entrée) : extrémité finale de l'arc. |
Références AjouteTete(), graphe::gamma, graphe::libre, et graphe::narc.
Référencé par GrapheAleatoire(), et ReadGraphe().
void AjouteArcValue | ( | graphe * | g, |
int | i, | ||
int | s, | ||
TYP_VARC | v | ||
) |
ajoute l'arc (i,s) au graphe g (application gamma seulement).
g | (entrée/sortie) : un graphe. |
i | (entrée) : extrémité initiale de l'arc. |
s | (entrée) : extrémité finale de l'arc. |
v | (entrée) : une valeur pour l'arc. |
Références AjouteTete(), graphe::gamma, graphe::libre, et graphe::narc.
Référencé par ReadGraphe().
ajoute une cellule contenant le sommet 'a' et la valeur 'v' en tête de la liste 'pliste'. La cellule est prise dans la liste 'plibre'.
plibre | (entrée) : pointeur sur une liste chaînee de cellules libres. |
pliste | (entrée) : pointeur sur une liste. |
a | (entrée) : un sommet. |
v | (entrée) : une valeur. |
Références AlloueCell(), cell::next, cell::som, et cell::v_arc.
Référencé par AjouteArc(), et AjouteArcValue().
retire la premiere cellule de la liste pointée par plibre et retourne un pointeur sur cette cellule.
plibre | (entrée) : pointeur sur une liste chaînee de cellules libres. |
Références cell::next.
Référencé par AjouteTete().
void AutoNomsSommets | ( | graphe * | g, |
int | mode | ||
) |
génère automatiquement des noms pour les sommets du graphe g.
g | (entrée) : un graphe. |
mode | (entrée) : 1 pour que les noms soient les indices des sommets, 2 pour que les noms soient les valeurs associées aux sommets, 3 pour des noms composes de l'indice et de la valeur. |
Références graphe::nomsommet, graphe::nsom, et graphe::v_sommets.
void EPSGraphe | ( | graphe * | g, |
char * | filename, | ||
double | r, | ||
double | t, | ||
double | marge, | ||
int | noms_sommets, | ||
int | v_sommets, | ||
int | col_sommets, | ||
int | v_arcs | ||
) |
génère une figure PostScript d'après la représentation "successeurs" du graphe g.
g | (entrée) : un graphe. |
filename | (entrée) : nom du fichier postscript à générer. |
r | (entrée) : rayon des cercles qui représentent les sommets (0 pour ne pas les dessiner). |
t | (entrée) : taille (demi-longueur) des flèches pour les arcs (0 pour ne pas les dessiner). |
marge | (entrée) : marge en x et en y. |
noms_sommets | (entrée) : booléen indiquant s'il faut écrire les noms des sommets. |
v_sommets | (entrée) : booléen indiquant s'il faut écrire les valeurs des sommets. |
col_sommets | (entrée) : booléen indiquant s'il faut colorier les sommets dont la valeur est non nulle. |
v_arcs | (entrée) : booléen indiquant s'il faut écrire les valeurs des arcs. |
Références graphe::gamma, cell::next, graphe::nomsommet, graphe::nsom, cell::som, cell::v_arc, graphe::v_sommets, graphe::x, et graphe::y.
int EstDansListe | ( | pcell | p, |
int | a | ||
) |
retourne 1 si le sommet 'a' se trouve dans la liste 'p', 0 sinon.
p | (entrée) : une liste chaînee de successeurs. |
a | (entrée) : un sommet. |
Références cell::next, et cell::som.
Référencé par EstSuccesseur().
int EstSuccesseur | ( | graphe * | g, |
int | i, | ||
int | s | ||
) |
retourne 1 si le sommet 's' est un successeur du sommet 'i', 0 sinon.
g | (entrée) : un graphe. |
i | (entrée) : un sommet de g. |
s | (entrée) : un sommet de g. |
Références EstDansListe(), et graphe::gamma.
Référencé par GrapheAleatoire().
graphe* GrapheAleatoire | ( | int | nsom, |
int | narc | ||
) |
retourne un graphe aléatoire à 'nsom' sommets et 'narc' arcs. Le graphe est antisymétrique et sans boucle. Le nombre d'arcs doit être <= nsom (nsom - 1) / 2. Les arcs sont pondérés (valeur aléatoire entre 0.0 et 1.0).
nsom | (entrée) : nombre de sommets. |
narc | (entrée) : nombre d'arcs. |
Références AjouteArc(), EstSuccesseur(), InitGraphe(), graphe::queue, RetireArc(), graphe::tete, et graphe::v_arcs.
graphe* InitGraphe | ( | int | nsom, |
int | nmaxarc | ||
) |
alloue la memoire nécessaire pour représenter un graphe a 'nsom' sommets, possédant au maximum 'nmaxarc' arcs. Retourne un pointeur sur la structure allouée.
nsom | (entrée) : nombre de sommets. |
nmaxarc | (entrée) : nombre maximum d'arcs. |
Références graphe::gamma, graphe::libre, graphe::narc, graphe::nmaxarc, graphe::nomsommet, graphe::nsom, graphe::queue, graphe::reserve, graphe::tete, graphe::v_arcs, graphe::v_sommets, graphe::x, et graphe::y.
Référencé par GrapheAleatoire(), et ReadGraphe().
insère la cellule p au début de la liste pointée par 'plibre'.
plibre | (entrée) : pointeur sur une liste chaînee de cellules libres. |
p | (entrée) : pointeur sur une cellule. |
Références cell::next.
Référencé par RetireTete().
void PlongementCirculaire | ( | graphe * | g, |
double | r | ||
) |
affecte à chaque sommet des coordonnées (x,y) régulierement réparties sur un cercle.
g | (entrée/sortie) : un graphe. |
r | (entrée) : le rayon du cercle. |
Références graphe::nsom, graphe::x, et graphe::y.
void PlongementRadial | ( | graphe * | g, |
int | c | ||
) |
répartit les sommets de g sur des cercles concentriques en fonction de leur rang, avec le sommet c au centre.
g | (entrée/sortie) : un graphe. |
c | (entrée) : le sommet à placer au centre. |
Références graphe::gamma, cell::next, graphe::nsom, cell::som, graphe::x, et graphe::y.
int PopSuccesseur | ( | graphe * | g, |
int | i | ||
) |
retire un arc (i,s) du graphe g (application gamma seulement), et retourne le sommet s
g | (entrée/sortie) : un graphe. |
i | (entrée) : un sommet de g. |
Références graphe::gamma, graphe::libre, RetireTete(), et cell::som.
void PSGraphe | ( | graphe * | g, |
char * | filename, | ||
double | r, | ||
double | t, | ||
double | marge | ||
) |
génère une figure PostScript d'après la représentation "successeurs" du graphe g.
g | (entrée) : un graphe. |
filename | (entrée) : nom du fichier postscript à générer. |
r | (entrée) : rayon des cercles qui représentent les sommets (0 pour ne pas les dessiner). |
t | (entrée) : taille (demi-longueur) des flèches pour les arcs (0 pour ne pas les dessiner). |
marge | (entrée) : marge en x et en y. |
Références graphe::gamma, cell::next, graphe::nomsommet, graphe::nsom, cell::som, graphe::x, et graphe::y.
graphe* ReadGraphe | ( | char * | filename | ) |
Lit les données d'un graphe dans le fichier filename, retourne un pointeur sur la structure graphe construite.
filename | (entrée) : nom du fichier graphe. |
Références AjouteArc(), AjouteArcValue(), InitGraphe(), graphe::nomsommet, graphe::x, et graphe::y.
void RetireArc | ( | graphe * | g, |
int | i, | ||
int | s | ||
) |
retire l'arc (i,s) du graphe g (application gamma seulement), si celui-ci etait présent. Sinon, pas d'action.
g | (entrée/sortie) : un graphe. |
i | (entrée) : un sommet de g. |
s | (entrée) : un sommet de g. |
Références graphe::gamma, graphe::libre, graphe::narc, et RetireTete().
Référencé par GrapheAleatoire().
retire la première cellule de la liste 'pliste'. La cellule est chaînee à la liste 'plibre'.
plibre | (entrée) : pointeur sur une liste chaînee de cellules libres. |
pliste | (entrée) : pointeur sur une liste. |
Références LibereCell(), et cell::next.
Référencé par PopSuccesseur(), et RetireArc().
void TermineGraphe | ( | graphe * | g | ) |
libère la memoire occupée par le graphe g.
g | (entrée) : un graphe. |
Références graphe::gamma, graphe::nomsommet, graphe::nsom, graphe::queue, graphe::reserve, graphe::tete, graphe::v_arcs, et graphe::v_sommets.