예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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;
        }