/**
* Diese Zeile ist fuer jede *.java-Datei noetig, damit der Compiler weiss, wo er zu suchen hat.
*/
package junit_libs;
/**
*
* @coauthor christian
* @modified 23.04.2009, chbauman:
* Interne Klassen auf 'protected' gesetzt.
* Interne Zustaende der internen Klassen 'public' gesetzt.
* Kommentare und Formatierung.
*/
public class GraphOriginal {
/**
* Nutze statt des Modifiers 'default' 'protected', so dass Kindklassen von
* GraphOriginal auf Edge zugreifen koennen.
*/
protected class Edge {
// Da in der Kindklasse auf diese Werte zugegriffen werden koennte, setze sie 'public'.
public Edge(int d, int c) {
dest = d;
cost = c;
}
}
}
/**
* @see Edge Kommentar
*/
protected class BFSItem {
// Da in der Kindklasse auf diese Werte zugegriffen werden koennte, setze sie 'public'.
public BFSItem(int c, int d, int p) {
color = c;
distance = d;
prev = p;
}
}
/**
* @see Edge Kommentar
*/
protected class DFSItem {
// Da in der Kindklasse auf diese Werte zugegriffen werden koennte, setze sie 'public'.
public DFSItem() {
prev = 0;
d = f = 0;
}
}
/*
* Lege nodes als eine List von List mit Edges als Füllung an.
*/
public GraphOriginal() {
// Okay, labels ist eine List - ArrayList ist die Implementierungsklasse in unserem Fall.
/*
* nodes ist eine List<List<...>>.
* Wir definieren nun, dass eine ArrayList unbestimmte List-Instanzen mit Edge-Objekten haelt.
* Dadurch koennen wir in unsere ArrayList jede erdenkliche andere List reinstecken.
*
* Wuerden wir ArrayList<ArrayList<...>> sagen, waere das zu restriktiv, da nodes oben als
* "generelle List-Instanz von einer generellen List-Instanz von Edge-Objekten" ist.
* nodes sieht ja nach aussen nur als List<List<...>> aus, weswegen wir
*
* nodes.add(new LinkedList<Edge>());
* nodes.add(new ArrayList<Edge>());
*
* aufrufen koennten. Die erste zuweisung wird dann aber fehlschlagen, da man eine LinkedList
* nicht als ArrayList ausgeben kann.
*/
}
}
throw new RuntimeException("Node already defined");
}
if (i == -1)
throw new RuntimeException("no such element");
return i;
}
}
int i;
}
}
}
}
int time;
public void searchDepthFirst() {
time = 0;
int i = 0;
}
}
}
}
String s = "";
}
return s;
}
}