2012-03-22 3 views
0

У меня есть два класса.Создать новую копию графика в java

Class Graph { 
    List<Vertex> Vertices; 
} 

Class Vertex { 
    List<Vertex> edges; 
} 

Я должен создать копию функции (график G), который будет принимать график и возвращает новый график, который является глубокой копией объекта входного графа.

Я попытался выполнить итерацию по вершинам и краям, но так как список в списке снова отображается в списке. Он идет в бесконечном цикле.

ответ

1

Как он может переходить в бесконечный цикл, поскольку списки содержат только элементы нижнего уровня?

// To be adapted to your needs of course... 
public Graph copy(Graph g) { 
    Graph gg = new Graph(); 

    for (Vertex v : g.getVertices()) { 
     Vertex vv = new Vertex(); 
     gg.add(vv); 

     for (Edge e : v.getEdges()) { 
      Edge ee = new Edge(); 
      vv.add(ee); 
     } 
    } 

    return gg; 
} 
Смежные вопросы