Source of VertexInterface.java


  1: package GraphPackage;
  2: import java.util.Iterator;
  3: /**
  4:    An interface for a vertex in a graph.
  5:    
  6:    @author Frank M. Carrano
  7:    @author Timothy M. Henry
  8:    @version 5.0
  9: */
 10: public interface VertexInterface<T>
 11: {
 12:    /** Gets this vertex's label.
 13:        @return  The object that labels the vertex. */
 14:    public T getLabel();

 16:    /** Marks this vertex as visited. */
 17:    public void visit();

 19:    /** Removes this vertex's visited mark. */
 20:    public void unvisit();

 22:    /** Sees whether the vertex is marked as visited.
 23:        @return  True if the vertex is visited. */
 24:    public boolean isVisited();

 26:    /** Connects this vertex and a given vertex with a weighted edge.
 27:        The two vertices cannot be the same, and must not already
 28:        have this edge between them. In a directed graph, the edge 
 29:        points toward the given vertex.
 30:        @param endVertex   A vertex in the graph that ends the edge.
 31:        @param edgeWeight  A real-valued edge weight, if any.
 32:        @return  True if the edge is added, or false if not. */
 33:    public boolean connect(VertexInterface<T> endVertex, double edgeWeight);
 34:                          
 35:    /** Connects this vertex and a given vertex with an unweighted 
 36:        edge. The two vertices cannot be the same, and must not 
 37:        already have this edge between them. In a directed graph, 
 38:        the edge points toward the given vertex.
 39:        @param endVertex   A vertex in the graph that ends the edge.
 40:        @return  True if the edge is added, or false if not. */
 41:    public boolean connect(VertexInterface<T> endVertex);

 43:    /** Creates an iterator of this vertex's neighbors by following 
 44:        all edges that begin at this vertex.
 45:        @return  An iterator of the neighboring vertices of this vertex. */
 46:    public Iterator<VertexInterface<T>> getNeighborIterator();

 48:    /** Creates an iterator of the weights of the edges to this 
 49:        vertex's neighbors.
 50:     @return  An iterator of edge weights for edges to neighbors of this
 51:              vertex. */
 52:    public Iterator<Double> getWeightIterator();

 54:    /** Sees whether this vertex has at least one neighbor.
 55:        @return  True if the vertex has a neighbor. */
 56:    public boolean hasNeighbor();

 58:    /** Gets an unvisited neighbor, if any, of this vertex.
 59:        @return  Either a vertex that is an unvisited neighbor or null
 60:                 if no such neighbor exists. */
 61:    public VertexInterface<T> getUnvisitedNeighbor();

 63:    /** Records the previous vertex on a path to this vertex.
 64:        @param predecessor  The vertex previous to this one along a path.  */
 65:    public void setPredecessor(VertexInterface<T> predecessor);

 67:    /** Gets the recorded predecessor of this vertex.
 68:        @return  Either this vertex's predecessor or null if no predecessor
 69:                 was recorded. */
 70:    public VertexInterface<T> getPredecessor();

 72:    /** Sees whether a predecessor was recorded for this vertex.
 73:        @return  True if a predecessor was recorded. */
 74:    public boolean hasPredecessor();

 76:    /** Records the cost of a path to this vertex.
 77:        @param newCost  The cost of the path. */
 78:    public void setCost(double newCost);

 80:    /** Gets the recorded cost of the path to this vertex.
 81:        @return  The cost of the path. */
 82:    public double getCost();
 83: } // end VertexInterface