Iz E-študij, proste zakladnice študentskega znanja
//Implementacija grafa predstavljenega s seznamoma vozlisc in povezav
public class KGraphList implements KGraph {
KVertex fVertex;
KEdge fEdge;
public KGraphList() {
makenull();
}
public void makenull() {
fVertex = null;
fEdge = null;
}
public void insertVertex(KVertex v) {
v.nextVertex = fVertex;
fVertex = v;
}
public void insertEdge(KVertex v1, KVertex v2) {
KEdge newEdge = new KEdge(null, v1, v2, fEdge);
fEdge = newEdge;
}
public void insertEdge(KEdge e) {
e.nextEdge = fEdge;
fEdge = e;
}
public KVertex firstVertex() {
return fVertex;
}
public KVertex nextVertex(KVertex v) {
return v.nextVertex;
}
public KEdge firstEdge() {
return fEdge;
}
public KEdge nextEdge(KEdge e) {
return e.nextEdge;
}
public KVertex endPoint1(KEdge e) {
return e.v1 ;
}
public KVertex endPoint2(KEdge e) {
return e.v2 ;
}
public void printGraph() {
System.out.println("Vertices: ");
for (KVertex v = firstVertex(); v != null; v = nextVertex(v))
System.out.print(v.value + ", ");
System.out.print("\nEdges: ");
for (KEdge e = firstEdge(); e != null; e = nextEdge(e))
System.out.print("<" + endPoint1(e).value + ", " + endPoint2(e).value + ">, ");
System.out.println();
}
public static void main(String[] args) {
KGraph kGraph = new KGraphList();
for (int i = 1; i < 10; i++)
kGraph.insertVertex(new KVertex(new Integer(i)));
// graf iste sodosti
for (KVertex vi = kGraph.firstVertex() ; vi != null ; vi = kGraph.nextVertex(vi))
for (KVertex vj = kGraph.firstVertex() ; vj != null ; vj = kGraph.nextVertex(vj))
if ( ((Integer)vj.value).intValue() % 2 == ((Integer)vi.value).intValue() %2 &&
((Integer)vj.value).intValue() < ((Integer)vi.value).intValue() )
kGraph.insertEdge(vi,vj);
System.out.println("Undirected Kgraph lists for same parity") ;
kGraph.printGraph() ;
}
}