|
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.
1.8.6