/* public Graph API constructors: public Graph() mutators: public boolean addNode(Node) returns false iff can't add node to graph public boolean addEdge(Edge) returns false iff can't add edge to graph accessors: public NodeSet getNodeSet() public EdgeSet getEdgeSet() misc: public int nodeCount() public int edgeCount() public EdgeSet outgoingEdges(Node node) returns an array of the node's outgoing edges */ public class Graph { private NodeSet nodeSet; private EdgeSet edgeSet; public int nodeCount() { return nodeSet.length(); } public int edgeCount() { return edgeSet.length(); } public Graph() { nodeSet = new NodeSet( ); edgeSet = new EdgeSet( ); } public void addNode(Node node) { nodeSet.addNode(node); } public void addEdge(Edge edge) { edgeSet.addEdge(edge); addNode(edge.getSourceNode()); addNode(edge.getTargetNode()); } public EdgeSet getOutgoingEdges(Node node) { EdgeSet outEdges = new EdgeSet(); for(int i = 0; i < edgeSet.length(); i++) { if (node.equals(edgeSet.getEdge(i).getSourceNode())) { outEdges.addEdge(edgeSet.getEdge(i)); } } return outEdges; } public NodeSet getNodeSet() { return(nodeSet); } public EdgeSet getEdgeSet() { return(edgeSet); } }