aboutsummaryrefslogtreecommitdiff
path: root/sem1/algo/workshop2/dijkstra/graph.h
diff options
context:
space:
mode:
authorJulian T <julian@jtle.dk>2019-11-22 13:17:35 +0100
committerJulian T <julian@jtle.dk>2019-11-22 13:17:35 +0100
commitb9f94964183d680efd071abe5de2965124803971 (patch)
treeeec404f4298c14268add49c1d13b3a33026a2221 /sem1/algo/workshop2/dijkstra/graph.h
parent90999d01eff3b197001739ee3ee9ff6dd64217ce (diff)
Added dijkstra with dot format import
Diffstat (limited to 'sem1/algo/workshop2/dijkstra/graph.h')
-rw-r--r--sem1/algo/workshop2/dijkstra/graph.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/sem1/algo/workshop2/dijkstra/graph.h b/sem1/algo/workshop2/dijkstra/graph.h
new file mode 100644
index 0000000..484fea4
--- /dev/null
+++ b/sem1/algo/workshop2/dijkstra/graph.h
@@ -0,0 +1,46 @@
+#ifndef GRAPH_H_
+#define GRAPH_H_
+
+#define COLOR_WHITE 0
+#define COLOR_GRAY 1
+#define COLOR_BLACK 2
+
+#define HASHSIZE 128
+
+struct vertex_struct;
+
+// Linked list
+typedef struct edge_struct {
+ int weight;
+ struct vertex_struct *from;
+ struct vertex_struct *to;
+ // Linked list stuff
+ struct edge_struct *next;
+ struct edge_struct *prev;
+} edge_t;
+
+typedef struct vertex_struct {
+ char *ref;
+ int color;
+
+ int dist;
+ struct vertex_struct *p;
+
+ edge_t *adj;
+
+ // Hash table stuff
+ struct vertex_struct *next;
+} vertex_t;
+
+typedef struct {
+ vertex_t *hashtable[128];
+} graph_t;
+
+int graph_to_dot(FILE *f, graph_t *g);
+int graph_from_dot(FILE *f, graph_t *g);
+int graph_print_adj(graph_t *g, char *ref);
+void graph_edge(graph_t *g, char *from, char *to, int weight);
+edge_t *edge_next(graph_t *g, edge_t *e);
+vertex_t *vertex_next(graph_t *g, vertex_t *v);
+
+#endif // GRAPH_H_