Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
        /// <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);
            }
        }