package GPL;
//dja - trying to fix logic problems
import java.util.Iterator;
import java.util.LinkedList;
//dja: added to fix compile problems when doing the performance improvements
import java.util.Comparator;
import java.util.Collections;
// ************************************************************
public class Graph {
public LinkedList vertices;
public static final boolean isDirected = true;
public Graph() {
vertices = new LinkedList();
}
public VertexIter getVertices( )
{
// dja - trying to fix logic problems
return new VertexIter( )
{
private Iterator iter = vertices.iterator( );
public Vertex next( )
{
return ( Vertex )iter.next( );
}
public boolean hasNext( )
{
return iter.hasNext( );
}
};
}
// dja - fix compile code.
// public EdgeIter getEdges() { return null; }
// public EdgeIfc addEdge(Vertex start, Vertex end) { return null; }
// public Vertex findsVertex( String theName ) { return null; }
// Fall back method that stops the execution of programs
public void run( Vertex s ) {}
//dja: fix for compile problems during performance improvements
public void sortVertices(Comparator c) {
Collections.sort(vertices, c);
}
// Adds an edge without weights if Weighted layer is not present
public void addAnEdge( Vertex start, Vertex end, int weight )
{
addEdge( start,end );
}
public void addVertex( Vertex v ) {
vertices.add( v );
}
// Adds and edge by setting end as adjacent to start vertices
public EdgeIfc addEdge( Vertex start, Vertex end ) {
start.addAdjacent( end );
return( EdgeIfc ) start;
}
// Finds a vertex given its name in the vertices list
public Vertex findsVertex( String theName )
{
int i=0;
Vertex theVertex;
// if we are dealing with the root
if ( theName==null )
return null;
for( i=0; i<vertices.size(); i++ )
{
theVertex = ( Vertex )vertices.get( i );
if ( theName.equals( theVertex.name ) )
return theVertex;
}
return null;
}
public void display() {
int s = vertices.size();
int i;
System.out.println( "******************************************" );
System.out.println( "Vertices " );
for ( i=0; i<s; i++ )
( ( Vertex ) vertices.get( i ) ).display();
System.out.println( "******************************************" );
}
}