Beispiel #1
0
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--;
	}
  }
}
Beispiel #2
0
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;
}