/// <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); }
/// <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); }