/// <summary> /// Добавляет ребро в граф. Если связь уже есть, то удаляет её. /// </summary> /// <param name="Vertex1">Первая вершина, которая входит в добавляемое ребро.</param> /// <param name="Vertex2">Вторая вершина, которая входит в добавляемое ребро.</param> public void AddEdge(Vertex Vertex1, Vertex Vertex2) { try { if (!edges.Exists(a => a == new Edge(Vertex1, Vertex2))) { Vertex1.Vertexes.Add(Vertex2); //Vertex2.Vertexes.Add(Vertex1); edges.Add(new Edge(Vertex1, Vertex2)); OnEdgeAdded?.Invoke(this, edges.Last()); OnChange?.Invoke(this); } } catch (Exception e) { throw new Exception(e.Message); } }
/// <summary> /// Добавляет ребро в граф, на основе индексов вершин. Если связь уже есть, то удаляет её. /// </summary> /// <param name="Index1">Индекс первой вершины, которая входит в добавляемое ребро.</param> /// <param name="Index2">Индекс второй вершины, которая входит в добавляемое ребро</param> public void AddEdge(Int32 Index1, Int32 Index2) { Vertex v; try { v = vertexes[Index1]; v = vertexes[Index2]; } catch { throw new Exception("Индекс кривой!"); } if (!edges.Contains(new Edge(vertexes[Index1], vertexes[Index2]))) { vertexes[Index1].Vertexes.Add(vertexes[Index2]); //vertexes[Index2].Vertexes.Add(vertexes[Index1]); edges.Add(new Edge(vertexes[Index1], vertexes[Index2])); OnEdgeAdded?.Invoke(this, edges.Last()); OnChange?.Invoke(this); } }