aboutsummaryrefslogtreecommitdiff
path: root/src/graph.h
diff options
context:
space:
mode:
authorMikkel Thestrup <mithe24@student.sdu.dk>2025-11-30 14:24:52 +0100
committerMikkel Thestrup <mithe24@student.sdu.dk>2025-11-30 14:24:52 +0100
commita23cb6d6f011950b11789898c10e63f4473a5200 (patch)
treee6f0c3c85e240848a03909639ac227db05f7da2a /src/graph.h
parent06be9b97b3cc575c69d037d6ba09950c0a53d7f3 (diff)
downloadcycle-detector-a23cb6d6f011950b11789898c10e63f4473a5200.tar.gz
cycle-detector-a23cb6d6f011950b11789898c10e63f4473a5200.zip
Updated every file and function to follow style guide
Diffstat (limited to 'src/graph.h')
-rw-r--r--src/graph.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/graph.h b/src/graph.h
new file mode 100644
index 0000000..ca90bbe
--- /dev/null
+++ b/src/graph.h
@@ -0,0 +1,40 @@
+#ifndef GRAPH_H
+#define GRAPH_H
+
+#include "linked_list.h"
+
+typedef struct Vertex Vertex;
+typedef struct Graph Graph;
+struct Vertex {
+ int id; // a number in [0; numVertices[
+ LinkedList *outNeighbours; // A linked list of vertices.
+ LinkedList *inNeighbours; // A linked list of vertices
+};
+
+struct Graph {
+ int numVertices;
+ int numEdges;
+ Vertex *vertices; // An array of numVertices vertices
+};
+
+// Allocates and constructs a new graph with n vertices.
+// Returns a pointer to the new graph, or NULL on error.
+// Post: the caller owns the graph.
+Graph *graph_new(int n);
+
+// Adds an edge from the i'th to the j'th vertex (0-indexed).
+void graph_add_edge(Graph *g, int i, int j);
+
+// Reads a graph from the given file and returns a newly
+// constructed Graph representing it.
+// Returns a pointer to the read graph, or NULL on error.
+// Post: the caller owns the graph.
+Graph *graph_read(const char *filename);
+
+// Deallocates the given graph and all its associated memory.
+void graph_delete(Graph *g);
+
+// Prints some useful information about the given graph.
+void graph_print(Graph *g);
+
+#endif // GRAPH_H