Ejemplo n.º 1
0
        /// <summary> Создаёт глубокую копию данного объекта </summary>
        public override object Clone()
        {
            var clone = new UndirectedGraph();

            VerticesList.ForEach(v => clone.AddVertex(new Vertex(v.Name)));
            foreach (var edge in EdgesList)
            {
                var v1 = clone.Vertices.First(edge.Vertex1.Equals);
                var v2 = clone.Vertices.First(edge.Vertex2.Equals);
                clone.AddEdge(new UndirectedEdge(v1, v2));
            }

            return(clone);
        }
Ejemplo n.º 2
0
        /// <summary> Создаёт глубокую копию данного объекта </summary>
        public override object Clone()
        {
            var clone = new DirectedWeightedGraph();

            VerticesList.ForEach(v => clone.AddVertex(new Vertex(v.Name)));
            foreach (var edge in EdgesList)
            {
                var v1 = clone.Vertices.Single(v => v.Equals(edge.Vertex1));
                var v2 = clone.Vertices.First(v => v.Equals(edge.Vertex2));
                clone.AddEdge(new DirectedWeightedEdge(v1, v2, edge.Weight));
            }

            return(clone);
        }