diff options
Diffstat (limited to 'graph.h')
-rw-r--r-- | graph.h | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +/* + Projet d'algorithmique et programmation 2013-2014 + (cours de C.Matthieu et J.Stern) + Alex AUVOLAT, Mendes OULAMARA + + Fonctions pour la manipulation de graphes. + Remarque : un graphe utilise les ensembles de set_*.c, donc si on utilise + l'implémentation sous forme de bitset cela donne l'équivalent d'une matrice + d'adjacence, alors que l'utilisation de l'implémentation sous forme de liste + liée est plus adaptée pour un graphe peu rempli. + + Dans l'ensemble du projet on travaille sur des graphes non orientées, + c'est-à-dire que la matrice d'adjacence est symmétrique. + + La structure donnée ici permet très facilement d'accéder à l'ensemble + des voisins d'un sommet, mais il est un peu plus compliqué d'énumérer + toutes les arêtes du graphe. + + Il est recommandé d'utiliser la fonction graph_neighbours(int s) pour + accéder aux voisins d'un noeud, car celle-ci renvoie un const set et + non un simple set, ce qui évite d'accidentelles modifications des + données du graphe. +*/ + +#ifndef DEF_GRAPH_H +#define DEF_GRAPH_H + +#include <stdio.h> + +#include "sets.h" + +struct graph_descriptor { + int N; // number of nodes + set *neighbour; // set of neighbours for each node +}; + +typedef struct graph_descriptor *graph; + + +graph load_graph(FILE *stream); // format specified in README file +const set graph_neighbours(const graph g, int n); +void dump_graphviz(const graph g, FILE *stream); +void delete_graph(graph g); + +#endif |