Reputation: 4771
I am trying to create a Graph class that uses another class, the Vertex class to represent all the vertices of the graph. I am not sure if I need an Edge class that will represent the possible connections between two vertices, because every vertex can keep track of the other nodes it is connected to. But I am not sure if this is correct. What do you think?
Thank you.
Upvotes: 4
Views: 10326
Reputation: 3190
You don't have to use an Edge
class. You can use adjacency lists and still represent an unweighted graph correctly. For a weighted graph you need a way to represent edge costs, and thus using an Edge
class would be appropriate.
class Graph<E> {
private List<Vertex<E>> vertices;
private static class Vertex<E> {
E elem;
List<Vertex<E>> neighbors;
}
}
Upvotes: 10
Reputation: 205885
Typically, a representation is chosen based in its suitability to the intended use. In this simple example, GraphPanel
uses nothing more than a List<Edge>
as its model.
Upvotes: 2