import java.io.*; import java.util.*; import Node.*; public class Graph { protected static char g_or_u = '0'; // g: gerichtet, u: ungerichtet protected static int vnumber = 0; // Anzahl Knoten protected static Node adjazenz[]; // Array von Knotenlisten /*** Adjazenzlisten einlesen ***/ public static void read() { try { BufferedReader in = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Bitte den Dateinamen eingeben: "); BufferedReader fin = new BufferedReader (new FileReader(in.readLine())); // Eine Zeile aus der Eingabedatei lesen String line = fin.readLine(); // Das Paar (edgeone,edgetwo) bildet eine Kante int edgeone = 0; int edgetwo = 0; while (line != null) { // Lesen von zusammenhaengenden Zeichenreihen (Token) aus einer Zeile StringTokenizer L = new StringTokenizer(line); while (L.hasMoreTokens()) { if (g_or_u == '0') // erstes Zeichen aus dem Token lesen g_or_u = L.nextToken().charAt(0); else if (vnumber == 0) { vnumber = Integer.parseInt(L.nextToken()); adjazenz = new Node[vnumber]; } else { edgeone = Integer.parseInt(L.nextToken()); edgetwo = Integer.parseInt(L.nextToken()); // Die Kante in die Adjazenzliste eintragen addedge(edgeone, edgetwo); if (g_or_u == 'u') addedge(edgetwo, edgeone); } } line = fin.readLine(); } fin.close(); } catch (Exception e) { System.out.println("Fehler: "+e); } } /*** Eine Kante in die Adjazenzliste eintragen ***/ private static void addedge(int one, int two) { Node newnode; newnode = new Node(two); Node t = adjazenz[one-1]; // Den Knoten am Ende der Liste one-1 eintragen if (t != null) { while (t.successor() != null) t = t.successor(); t.writesucc(newnode); } else adjazenz[one-1] = newnode; } /*** Die Adjazenzliste ausgeben ***/ public static void print() { for (int i = 0; i < vnumber; i++) { System.out.print((i+1) + ": "); for (Node t = adjazenz[i]; t != null; t = t.successor()) { if (t != adjazenz[i]) System.out.print(", "); System.out.print(t.readnumber()); } System.out.println(); } } public static void main(String args[]) { read(); print(); } }