/// <summary> /// Добавляет вершину в сеть. /// </summary> /// <returns>Возвращает индекс вершины в массиве.</returns> /// <param name="node">Вершина</param> public int AddNode(Node node) { if (NodeExists(node)) throw new Exception("Узел #" + node.Id + " уже содержится в сети."); HashNodes.Add(node.Id, Nodes.Count); Nodes.Add(node); return Nodes.Count - 1; }
/// <summary> /// Проверяет, существует ли такая вершины в сети. /// </summary> /// <returns><c>true</c>, если вершина имеется в сети, <c>false</c> иначе.</returns> /// <param name="node">Вершина.</param> protected bool NodeExists(Node node) { if (node == null) throw new ArgumentNullException("node"); return HashNodes.ContainsKey(node.Id); }
/// <summary> /// Клонирует текущий объект. /// </summary> public virtual object Clone() { var res = new Node(Label, Id); res.Incoming = new List<Node>(Incoming); res.Outgoing = new List<Node>(Outgoing); return res; }