Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
 /// <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);
     }
 }