Iz E-študij, proste zakladnice študentskega znanja
//Usmerjen graf implementiran s s seznamom sosedov
public class DiGraphAdj implements DiGraph {
VertexAdj fVertex ;
public DiGraphAdj() {
makenull() ;
}
public void makenull() {
fVertex = null ;
}
public void insertVertex(Vertex v) {
((VertexAdj)v).nextVertex = fVertex ;
fVertex = (VertexAdj)v ;
}
public void insertEdge(Vertex v1, Vertex v2) {
EdgeAdj newEdge = new EdgeAdj(null, (VertexAdj)v2, ((VertexAdj)v1).firstEdge) ;
((VertexAdj)v1).firstEdge = newEdge ;
}
public Vertex firstVertex() {
return fVertex ;
}
public Vertex nextVertex(Vertex v) {
return ((VertexAdj)v).nextVertex ;
}
public Edge firstEdge(Vertex v) {
return ((VertexAdj)v).firstEdge ;
}
public Edge nextEdge(Vertex v, Edge e) {
return ((EdgeAdj)e).nextEdge ;
}
public Vertex endPoint(Edge e) {
return ((EdgeAdj)e).endVertex ;
}
public void printGraph() {
for (Vertex v = firstVertex(); v != null; v = nextVertex(v)) {
System.out.print(v.value + ": ");
for (Edge e = firstEdge(v); e != null; e = nextEdge(v, e))
System.out.print(endPoint(e).value + ", ");
System.out.println();
}
}
public static void main(String[] args) {
DiGraph diGraph = new DiGraphAdj();
for (int i=1 ; i <10 ; i++)
diGraph.insertVertex(new VertexAdj(new Integer(i)));
// graf deljiteljev
for (Vertex vi = diGraph.firstVertex() ; vi != null ; vi = diGraph.nextVertex(vi))
for (Vertex vj = diGraph.firstVertex() ; vj != null ; vj = diGraph.nextVertex(vj))
if ( ((Integer)vj.value).intValue() % ((Integer)vi.value).intValue() == 0)
diGraph.insertEdge(vi,vj);
System.out.println("Directed graph adjacency lists for divisors") ;
diGraph.printGraph() ;
}
}