From: Brendan Hansen Date: Thu, 21 Feb 2019 07:25:29 +0000 (-0600) Subject: final commit feb 21st X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=6221b7969e93ea153e41355299bb9700d26ae936;p=graph-algorithms.git final commit feb 21st --- 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)