From 6221b7969e93ea153e41355299bb9700d26ae936 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 21 Feb 2019 01:25:29 -0600 Subject: [PATCH] final commit feb 21st --- modules/graph_standard.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/graph_standard.c b/modules/graph_standard.c index b2cbb50..5d1f62d 100644 --- a/modules/graph_standard.c +++ b/modules/graph_standard.c @@ -206,14 +206,43 @@ int add_undirected(lua_State *L) int del_edge(lua_State *L) { header head = (header)lua_touserdata(L, 1); + int edge_id = lua_tointeger(L, 2); //we will have to walk through each node and walk through each edge of each node connect runner = head->front; while(runner != NULL) { + //now we will have to go through every edge within the node + edge curr_edge = runner->neighbor_list; + if(curr_edge == NULL) //no neighbors + runner = runner->next_node; + + else if(curr_edge->edge_id == edge_id) //first edge is one to remove + { + runner->neighbor_list = curr_edge->next_edge; + free(curr_edge); + return 0; + } + + else //search through each edge + { + while(curr_edge->next_edge != NULL) + { + if(curr_edge->next_edge->edge_id == edge_id) + { + curr_edge->next_edge = curr_edge->next_edge->next_edge; + free(curr_edge); + return 0; + } + } + } + + runner = runner->next_node; } + return 0; + } static connect find_node(header head, int node_id) -- 2.25.1