DiGraphAdj.java

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje
//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() ;
  }
 
}
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja