Мне дали задание реализовать граф в Java.В конечном итоге он будет использоваться для тестирования методов поиска (сначала ширина, глубина и итеративное углубление).Три класса, которые должны быть созданы, должны реализовать три соответствующих интерфейса:
public interface Node {
public Node createNode(String name, int ID, float weight);
public Node[] getNeighbours();
public Edge[] getEdges();
public void addEdge(Edge e);
public void removeEdge(Edge e);
public String getName();
public int getID();
public float getWeight();
public String toString();
public interface Edge {
public Edge createEdge(String name, int ID, float weight);
public Node getStartNode();
public void setStartNode(Node n);
public Node getEndNode();
public void setEndNode(Node n);
public String getName();
public int getID();
public float getWeight();
public String toString();
public interface Graph {
public Graph createGraph(String name, int ID, Node[] nodes, Edge[] edges, Node root);
public String getName();
public Edge[] getEdges();
public void addEdge(Edge e);
public Edge getEdge(String name, int ID);
public void removeEdge(Edge e);
public Node[] getNodes();
public void addNode(Node n);
public Node getNode(String name, int ID);
public void removeNode(Node n);
public void setRoot(Node n);
public Node getRoot();
public boolean isTree(); <= optional!
public String toString();
Основной метод будет в классе графа.
Я немного сбит с толку относительно того, почему существует createметоды для каждого класса, а не конструкторы.
Также кто-нибудь может посоветовать, следует ли мне хранить ребра с использованием матрицы смежности или списка смежностей?
Любая помощь будет принята с благодарностью.
Спасибо