[an error occurred while processing this directive]
cs205 Data Abstraction Notes
(Repeated from Class 8)
public class Graph { // OVERVIEW: A Graph is a mutable type that represents an undirected // graph. It consists of nodes that are named by Strings, // and edges that connect a pair of nodes. // A typical Graph is: < Nodes, Edges > where // Nodes = { n1, n2, , nm } // and // Edges = { {a_1, b_1}, ..., {a_n, b_n} } // (note that the elements of Edges are unordered sets) public Graph () // EFFECTS: Initializes this to a graph // with no nodes or edges: < {}, {} >. // Mutators public void addNode (String name) throws DuplicateException // MODIFIES: this // EFFECTS: If name is in Nodes, throws DuplicateException. // Otherwise, adds a node named name to this: // this_post = < Nodes_pre U { name }, Edges_pre > public void addEdge (String fnode, String tnode) throws NoNodeException, DuplicateException // MODIFIES: this // EFFECTS: If s and t are not names of nodes in // this, throws NoNodeException. If there is already an edge // between s and t, throws DuplicateEdgeException. // Otherwise, adds an edge between s and t to this: // thispost = < Nodespre, Edgespre U {fnode, tnode} > // Observers public boolean hasNode (String node) // EFFECTS: Returns true iff node is a node in this. SetgetNeighbors (String node) // REQUIRES: node is a node in this // EFFECTS: Returns the set consisting of all nodes in this // that are directly connected to node: // { n | {node, n} is in this.edges } }