/// <summary> /// Удаляет ребро соединяющие вершины с индексами Index1 и Index2, если таковые имеется. /// </summary> /// <param name="Index1">Индекс первой вершины.</param> /// <param name="Index2">Индекс второй вершины</param> public void RemoveEdge(Int32 Index1, Int32 Index2) { Vertex v; if (Index1 != Index2) { try { v = vertexes[Index1]; v = vertexes[Index2]; } catch { throw new Exception("Индекс кривой!"); } OnEdgeRemoved?.Invoke(this, new Edge(vertexes[Index1], vertexes[Index2])); if (vertexes[Index1].Vertexes.Contains(vertexes[Index2])) { vertexes[Index1].Vertexes.Remove(vertexes[Index2]); } if (vertexes[Index2].Vertexes.Contains(vertexes[Index1])) { vertexes[Index2].Vertexes.Remove(vertexes[Index1]); } OnChange?.Invoke(this); } }
/// <summary> /// Удаляет вершину из графа. /// </summary> /// <param name="DelVertex">Вершина, которую требуется удалить.</param> public void RemoveVertex(Vertex DelVertex) { try { OnVertexRemoved?.Invoke(this, DelVertex); List <Edge> fr = new List <Edge>(); foreach (Edge Incident in NeihbourEdges(DelVertex)) { fr.Add(Incident); } foreach (Edge e in fr) { OnEdgeRemoved?.Invoke(this, e); edges.Remove(e); } foreach (Vertex Incident in DelVertex.Incidented()) { Incident.Vertexes.Remove(DelVertex); } vertexes.Remove(DelVertex); OnChange?.Invoke(this); } catch (Exception e) { //throw new Exception(e.Message); } }
/// <summary> /// Удаляет вершину из графа по указанному индексу /// </summary> /// <param name="DelIndex">Индекс вершины, которую требуется удалить.</param> public void RemoveVertex(Int32 DelIndex) { try { foreach (Vertex Incident in vertexes[DelIndex].Incidented()) { OnEdgeRemoved?.Invoke(this, new Edge(Incident, vertexes[DelIndex])); Incident.Vertexes.Remove(vertexes[DelIndex]); } OnVertexRemoved?.Invoke(this, vertexes[DelIndex]); vertexes.Remove(vertexes[DelIndex]); OnChange?.Invoke(this); } catch (Exception e) { throw new Exception(e.Message); } }
/// <summary> /// Удаляет ребро соединяющие вершины Vertex1 и Vertex2, если таковые имеется. /// </summary> /// <param name="Vertex1">Первая вершина.</param> /// <param name="Vertex2">Вторая вершина.</param> public void RemoveEdge(Vertex Vertex1, Vertex Vertex2) { try { OnEdgeRemoved?.Invoke(this, new Edge(Vertex1, Vertex2)); if (Vertex1.Vertexes.Contains(Vertex2)) { Vertex1.Vertexes.Remove(Vertex2); } if (Vertex2.Vertexes.Contains(Vertex1)) { Vertex2.Vertexes.Remove(Vertex1); } OnChange?.Invoke(this); } catch (Exception e) { throw new Exception(e.Message); } }