aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikkel Thestrup <mithe24@student.sdu.dk>2025-12-03 22:38:44 +0100
committerMikkel Thestrup <mithe24@student.sdu.dk>2025-12-03 22:38:44 +0100
commita846e5e8b6442f6aa9ad738e2173da3211325f8e (patch)
tree3bff07717d3375be4de1abecebe0bff5288bbdf7
parent4a71e268c9cc5d7d9dd8a734ead6d657efa555a6 (diff)
downloadcycle-detector-a846e5e8b6442f6aa9ad738e2173da3211325f8e.tar.gz
cycle-detector-a846e5e8b6442f6aa9ad738e2173da3211325f8e.zip
Added graph_remove_edge()
Diffstat (limited to '')
-rw-r--r--src/graph.c12
-rw-r--r--src/graph.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/graph.c b/src/graph.c
index 5ad439a..f3e7517 100644
--- a/src/graph.c
+++ b/src/graph.c
@@ -43,6 +43,18 @@ void graph_add_edge(Graph *g, int i, int j) {
g->num_edges++;
}
+void graph_remove_edge(Graph *g, int i, int j) {
+ LinkedListNode *in_node = linked_list_find(
+ g->vertices[i].out_neighbours,
+ &g->vertices[j]);
+ LinkedListNode *out_node = linked_list_find(
+ g->vertices[j].in_neighbours,
+ &g->vertices[j]);
+ linked_list_remove(g->vertices[i].out_neighbours, in_node);
+ linked_list_remove(g->vertices[j].in_neighbours, out_node);
+ g->num_edges--;
+}
+
Graph *graph_read(const char *filename) {
FILE *file = fopen(filename, "r");
char line[1024];
diff --git a/src/graph.h b/src/graph.h
index 22b4ae5..54d4f7a 100644
--- a/src/graph.h
+++ b/src/graph.h
@@ -30,6 +30,7 @@ void graph_add_edge(Graph *g, int i, int j);
// Returns a pointer to the read graph, or NULL on error.
// Post: the caller owns the graph.
Graph *graph_read(const char *filename);
+void graph_remove_edge(Graph *g, int i, int j);
// Deallocates the given graph and all its associated memory.
void graph_delete(Graph *g);