X-Git-Url: https://git.wirehaze.ovh/graph-theory.git/blobdiff_plain/9bd63c3cb2b06bddf6159fd4d233196057a3633d..d8af4076c2a05a741d1218ba850ff7f288ad267c:/graph/adj.h diff --git a/graph/adj.h b/graph/adj.h index 680d6b0..86381f9 100644 --- a/graph/adj.h +++ b/graph/adj.h @@ -3,31 +3,38 @@ /* adjacency list implementation */ -struct vertex; struct edge; -struct graph; -struct edge +struct vertex { - struct vertex *to; - struct edge *next; + struct edge *adj; /* edges linked list */ }; -struct vertex +struct edge /* probably not a good name for this */ { - struct edge *adj; + struct vertex *to; /* other vertex in edge */ + struct edge *next; }; struct graph { - struct vertex *v; - unsigned int nv; + struct vertex *v; /* array of vertices */ + unsigned int nv; /* number of vertices */ }; -struct graph * -new_graph (unsigned int nv); +struct graph *new_graph (unsigned int nv); +void free_graph (struct graph *g); -int -new_edge (struct graph *g, unsigned int vi, unsigned int vj); +int add_arc (struct graph *g, unsigned int vi, unsigned int vj); +void del_arc (struct graph *g, unsigned int vi, unsigned int vj); + +int add_edge (struct graph *g, unsigned int vi, unsigned int vj); +void del_edge (struct graph *g, unsigned int vi, unsigned int vj); + +static __inline__ unsigned int +vertex_id (struct graph *g, struct vertex *v) +{ + return (unsigned int)(v - g->v); +} #endif /* GRAPH_H */