final commit feb 21st
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 21 Feb 2019 07:25:29 +0000 (01:25 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 21 Feb 2019 07:25:29 +0000 (01:25 -0600)
modules/graph_standard.c

index b2cbb50732418fa7666d21dcf69be7b6aaa81781..5d1f62d6943e2125627395ed128fc3dbf6d7337b 100644 (file)
@@ -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)