public void removeVertex(IVertex <Vertex> vertex) { AdjMapGraphVertex v = validate(vertex); foreach (IEdge <Edge> e in v.getOutgoing().Values) { removeEdge(e); } foreach (IEdge <Edge> e in v.getIncoming().Values) { removeEdge(e); } vertices.Remove(v); }
public void removeEdge(IEdge <Edge> edge, bool directed = true) { AdjMapGraphEdge e = validate(edge); AdjMapGraphVertex v0 = validate(e.getEndpoints()[0]); AdjMapGraphVertex v1 = validate(e.getEndpoints()[1]); v0.getOutgoing().Remove(v1); v1.getIncoming().Remove(v0); if (!directed) { if (getEdge(v1, v0) == null) { throw new ArgumentException("Inverse edge does not exist"); } else { v1.getOutgoing().Remove(v0); v0.getIncoming().Remove(v1); } } }