FranXh
FranXh

Reputation: 4771

Graphs implementation in java

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

Answers (2)

blackcompe
blackcompe

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

trashgod
trashgod

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

Related Questions