void rmNode(Node *n, Graph *graph){ free(n->value); free(n); for (int i = 0; i < graph->size; i++){ if (getEdgeFirst(graph->edges[i]) == n || getEdgeSecond(graph->edges[i]) == n){ rmEdge(graph->edges[i], graph); i--; } } }
int Graph::rmVertex(Vertex const &v) { int vpos = getPos(v); if(vpos < getVertexSize()) { vector<Vertex *>::iterator iv = _vertexList.begin() + vpos; Vertex *tmp = *iv; vector<Edge *> adjEdge = tmp->getAdj(); for(auto edge : adjEdge) { rmEdge(*edge); } _vertexList.erase(iv); delete tmp; } return vpos; }