import java.io.IOException; class Verbindung{ int laenge; int wohin; Verbindung next; Verbindung(int l, int w, Verbindung v){ laenge = l; wohin = w; next = v;} } class KnotenTyp{ String name; Verbindung nachbarn; KnotenTyp(String s, Verbindung v){ name = s; nachbarn = v;} } class Graph{ Graph(){ knoten[ 0] = new KnotenTyp("San Francisco", new Verbindung(18, 1, new Verbindung(12, 3, new Verbindung(20, 4, new Verbindung(15, 14, null))))); knoten[ 1] = new KnotenTyp("San Rafael", new Verbindung(18, 0, new Verbindung(15, 2, null))); knoten[ 2] = new KnotenTyp("Richmond", new Verbindung(15, 1, new Verbindung(15, 3, null))); knoten[ 3] = new KnotenTyp("Oakland", new Verbindung(12, 0, new Verbindung(15, 2, new Verbindung(20, 5, null)))); knoten[ 4] = new KnotenTyp("San Mateo", new Verbindung(20, 0, new Verbindung(20, 5, new Verbindung(18, 6, new Verbindung(25, 3, null))))); knoten[ 5] = new KnotenTyp("Hayward", new Verbindung(20, 3, new Verbindung(20, 4, new Verbindung(14, 7, null)))); knoten[ 6] = new KnotenTyp("Palo Alto", new Verbindung(18, 4, new Verbindung(15, 7, new Verbindung(10, 9, null)))); knoten[ 7] = new KnotenTyp("Fremont", new Verbindung(14, 5, new Verbindung(15, 6, new Verbindung(20, 8, null)))); knoten[ 8] = new KnotenTyp("San Jose", new Verbindung(20, 7, new Verbindung(15, 9, new Verbindung(60,11, null)))); knoten[ 9] = new KnotenTyp("Santa Clara", new Verbindung(10, 6, new Verbindung(15, 8, new Verbindung(35,10, null)))); knoten[10] = new KnotenTyp("Scotts Valley", new Verbindung(35, 9, new Verbindung(10,12, null))); knoten[11] = new KnotenTyp("Watsonville", new Verbindung(60, 8, new Verbindung(70,12, null))); knoten[12] = new KnotenTyp("Santa Cruz", new Verbindung(10, 9, new Verbindung(70,11, new Verbindung(50,13, null)))); knoten[13] = new KnotenTyp("Half Moon Bay", new Verbindung(50,12, new Verbindung(25, 4, new Verbindung(15,14, null)))); knoten[14] = new KnotenTyp("Pacifica", new Verbindung(15,13, new Verbindung(15, 0, null))); } KnotenTyp [] knoten = new KnotenTyp[15]; int knotenZahl = knoten.length; int kante(int k1, int k2){ Verbindung vp = knoten[k1].nachbarn; while (vp != null){ if (vp.wohin == k2) return vp.laenge; vp = vp.next; } return 0; } void dfVisit(int k){ int[] marken = { 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 }; rekDFVisit(marken, k); } void rekDFVisit(int[] marken, int k){ int max = knotenZahl; if (marken[k] < 1){ marken[k]++; System.out.println(knoten[k].name); for (int n = 0; n < max; n++) if (kante(k, n) > 0) rekDFVisit(marken, n); } } } public class GraphT { public static void main(String args[]) { System.out.println("Graph Tester"); Graph MeinGraph = new Graph(); /* for (int i = 0; i < MeinGraph.knoten.length; i++) System.out.println(MeinGraph.knoten[i].name); */ MeinGraph.dfVisit(0); } }