package GPL;
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;
// Neighbor implementation
// *************************************************************************
public class Graph {
public LinkedList vertices;
public static boolean isDirected = true;
public Graph() {
vertices = new LinkedList();
}
// 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, new Neighbor( end ) );
// }
// Adds an edge without weights if Weighted layer is not present
public EdgeIfc addEdge( Vertex start, Vertex end )
{
Neighbor e = new Neighbor( end );
addEdge( start, e );
return e;
}
public void addVertex( Vertex v ) {
vertices.add( v );
}
public void addEdge( Vertex start, Neighbor theNeighbor ) {
start.addEdge( theNeighbor );
}
// Finds a vertex given its name in the vertices list
public Vertex findsVertex( String theName )
{
Vertex theVertex = null;
// if we are dealing with the root
if ( theName==null )
{
return null;
}
for(VertexIter vxiter = getVertices( ); vxiter.hasNext( ); )
{
theVertex = vxiter.next( );
if ( theName.equals( theVertex.getName( ) ) )
{
return theVertex;
}
}
return theVertex;
}
public VertexIter getVertices( )
{
return new VertexIter( )
{
private Iterator iter = vertices.iterator( );
public Vertex next( )
{
return (Vertex)iter.next( );
}
public boolean hasNext( )
{
return iter.hasNext( );
}
};
}
public void display( )
{
System.out.println( "******************************************" );
System.out.println( "Vertices " );
for ( VertexIter vxiter = getVertices( ); vxiter.hasNext( ) ; )
{
vxiter.next( ).display( );
}
System.out.println( "******************************************" );
}
}