© 1998-2002 McGraw-Hill

structure
Class GraphListUndirected

java.lang.Object
  |
  +--structure.AbstractStructure
        |
        +--structure.GraphList
              |
              +--structure.GraphListUndirected
All Implemented Interfaces:
Graph, Structure

public class GraphListUndirected
extends GraphList

A GraphListUndirected is a list-based graph representation that consists of a collection of vertices and undirected edges. Portions of the graph may be marked visited to support iterative algorithms. Iteration is provided over vertices, edges, and vertices adjacent to a particular vertex.

Example Usage:

To create a graph representation of the movie theaters nearest the Williams College Department of Computer Science's unix laboratory, and to print these theaters out in order of increasing distance, we could use the following:

  public static void main(String[] argv){
	Graph theaters = new GraphListUndirected();
	FibHeap heap = new FibHeap();
	
	//instantiate array of locations 
	String[] locations = new String[]{"TCL 312", "Images Cinema", 
					  "Movie Plex 3", "Cinema 1,2,&3", 
					  "Cinema 7", "Berkshire Mall Cinemas"
					  ,"Hathaway's Drive Inn Theatre",
					  "Hollywood Drive-In Theatre"};

	//instantiate array of distances between location[0] 
	//and movie theaters
	double[] distances =  new double[]{-1, 0.0, 12.6, 12.9, 12.9, 
					   14.7, 16.5, 18.0};
	
	//build graph
	for(int i=0; i < locations.length; i++) theaters.add(locations[i]);
	for(int i=1; i < distances.length; i++){
	  theaters.addEdge(locations[0],locations[i],new Double(distances[i]));
	}
	
	//place neighbors of lab in into priority queue
	for(Iterator i=theaters.neighbors(locations[0]); i.hasNext();){
	    Object theater = i.next();
	    Object distance = theaters.getEdge(locations[0], theater).label();
	    heap.add(new ComparableAssociation((Comparable)distance,theater));
	}
	
	//print out theaters in order of distance
	while(!heap.isEmpty()){
	    ComparableAssociation show = (ComparableAssociation)heap.remove();
	    System.out.println(show.getValue()+" is "+show.getKey()+" miles away.");
	}
  }
 

See Also:
GraphList, GraphListDirected, GraphMatrixUndirected

Fields inherited from class structure.GraphList
dict, directed
 
Constructor Summary
GraphListUndirected()
          Construct an undirected, adjacency-list based graph.
 
Method Summary
 void addEdge(Object vLabel1, Object vLabel2, Object label)
          Add an edge between two vertices within the graph.
 int edgeCount()
          Determine the number of edges in graph.
 Object remove(Object label)
          Remove a vertex from the graph.
 Object removeEdge(Object vLabel1, Object vLabel2)
          Remove possible edge between vertices labeled vLabel1 and vLabel2.
 String toString()
          Construct a string representation of graph.
 
Methods inherited from class structure.GraphList
add, clear, contains, containsEdge, degree, edges, get, getEdge, isDirected, isEmpty, isVisited, isVisitedEdge, iterator, main, neighbors, reset, size, visit, visitEdge
 
Methods inherited from class structure.AbstractStructure
elements, hashCode, values
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, notify, notifyAll, registerNatives, wait, wait, wait
 
Methods inherited from interface structure.Structure
elements, values
 

Constructor Detail

GraphListUndirected

public GraphListUndirected()
Construct an undirected, adjacency-list based graph.
Method Detail

addEdge

public void addEdge(Object vLabel1,
                    Object vLabel2,
                    Object label)
Add an edge between two vertices within the graph. Edge is undirected. Duplicate edges are silently replaced. Labels on edges may be null.
Overrides:
addEdge in class GraphList
Parameters:
vLabel1 - One vertex.
vLabel2 - Another vertex.
label - Label associated with the edge.
Precondition:
vLabel1 and vLabel2 are labels of existing vertices, v1 & v2
Postcondition:
an edge (undirected) is inserted between v1 and v2; if edge is new, it is labeled with label (can be null)

remove

public Object remove(Object label)
Remove a vertex from the graph. Associated edges are also removed. Non-vertices are silently ignored.
Overrides:
remove in class GraphList
Parameters:
label - The label of the vertex within the graph.
Precondition:
label is non-null vertex label
Postcondition:
vertex with "equals" label is removed, if found
Returns:
The label associated with the vertex.

removeEdge

public Object removeEdge(Object vLabel1,
                         Object vLabel2)
Remove possible edge between vertices labeled vLabel1 and vLabel2.
Overrides:
removeEdge in class GraphList
Parameters:
vLabel1 - One vertex.
vLabel2 - Another vertex.
Precondition:
vLabel1 and vLabel2 are labels of existing vertices
Postcondition:
edge is removed, its label is returned
Returns:
The label associated with the edge removed.

edgeCount

public int edgeCount()
Determine the number of edges in graph.
Overrides:
edgeCount in class GraphList
Postcondition:
returns the number of edges in graph
Returns:
Number of edges in graph.

toString

public String toString()
Construct a string representation of graph.
Overrides:
toString in class Object
Postcondition:
returns string representation of graph
Returns:
String representing graph.

© 1998-2002 McGraw-Hill