libin103 1.4
Bibliothèque de structures de données en C
Chargement...
Recherche...
Aucune correspondance
generic_graph.h
Aller à la documentation de ce fichier.
1
13/*****************************************************************************
14* *
15* -------------------------------- graph.h ------------------------------- *
16* *
17*****************************************************************************/
18
19#ifndef GENERIC_GRAPH_H
20#define GENERIC_GRAPH_H
21
22#include <stdlib.h>
23#include <stdbool.h>
24
25#include "generic_list.h"
26#include "generic_set.h"
27
28/*****************************************************************************
29* *
30* Define a structure for adjacency lists. *
31* *
32*****************************************************************************/
33
41
42/*****************************************************************************
43* *
44* Define a structure for graphs. *
45* *
46*****************************************************************************/
47
51typedef struct generic_graph_ {
52 int vcount;
53 int ecount;
54 int (*compare)(const void *key1, const void *key2);
59 void* (*build) (const void *data);
62 void (*destroy)(void *data);
68
69/*****************************************************************************
70* *
71* Define colors for vertices in graphs. *
72* *
73*****************************************************************************/
74
83
84/*****************************************************************************
85* *
86* --------------------------- Public Interface --------------------------- *
87* *
88*****************************************************************************/
89
111 int (*compare)(const void *key1, const void *key2),
112 void* (*build) (const void *data),
113 void (*destroy)(void *data));
114
126
127
146 const void *data);
147
170 const void *data1,
171 const void *data2);
172
191 void **data);
192
212 void *data1,
213 void **data2);
214
227 const void *data,
228 generic_adjlist_t **adjlist);
229
246 const void *data1,
247 const void *data2);
248
249
259
260
269
278
279#endif
struct generic_adjlist_ generic_adjlist_t
Type de données pour représenter la liste des voisins d'un sommet du graphe.
int generic_graph_ins_edge(generic_graph_t *graph, const void *data1, const void *data2)
Insertion d'un nouvel arc dans un graphe.
generic_list_t generic_graph_adjlists(generic_graph_t *graph)
Accesseur de la liste d'ajdacence d'un graphe.
int generic_graph_rem_edge(generic_graph_t *graph, void *data1, void **data2)
Suppression d'un arc dans un graphe.
int generic_graph_ins_vertex(generic_graph_t *graph, const void *data)
Insertion d'un nouveau sommet dans un graphe.
enum vertexcolor_ vertexcolor_t
Type de données pour annoter les sommets lors d'un parcours de graphe.
struct generic_graph_ generic_graph_t
Type de données pour représenter un graphe comme une liste d'adjacence.
int generic_graph_ecount(generic_graph_t *graph)
Accesseur du nombre d'arcs du graphe.
void generic_graph_init(generic_graph_t *graph, int(*compare)(const void *key1, const void *key2), void *(*build)(const void *data), void(*destroy)(void *data))
Initialisation d'un nouveau graphe.
void generic_graph_destroy(generic_graph_t *graph)
Destruction d'un graphe.
vertexcolor_
Type de données pour annoter les sommets lors d'un parcours de graphe.
Definition generic_graph.h:78
@ black
Definition generic_graph.h:81
@ gray
Definition generic_graph.h:80
@ white
Definition generic_graph.h:79
int generic_graph_vcount(generic_graph_t *graph)
Accesseur du nombre de sommets du graphe.
int generic_graph_rem_vertex(generic_graph_t *graph, void **data)
Suppression d'un sommet dans un graphe.
bool generic_graph_is_adjacent(const generic_graph_t *graph, const void *data1, const void *data2)
Prédicat indiquant si deux sommets sont liés par un arc.
int generic_graph_adjlist(const generic_graph_t *graph, const void *data, generic_adjlist_t **adjlist)
Accesseur de la liste des voisins d'un sommet.
Liste chainée contenant des valeurs de type void*
Ensemble générique contenant des valeurs de type void*
Type de données pour représenter la liste des voisins d'un sommet du graphe.
Definition generic_graph.h:37
void * vertex
Definition generic_graph.h:38
generic_set_t adjacent
Definition generic_graph.h:39
Type de données pour représenter un graphe comme une liste d'adjacence.
Definition generic_graph.h:51
int vcount
Definition generic_graph.h:52
int ecount
Definition generic_graph.h:53
void(* destroy)(void *data)
Definition generic_graph.h:62
int(* compare)(const void *key1, const void *key2)
Definition generic_graph.h:54
generic_list_t adjlists
Definition generic_graph.h:65
Type de données pour représenter une liste chainée contenant des void*
Definition generic_list.h:49