/***************************************************************/ /* Prof. Dr. Gregor Büchel */ /* Source : Evanw1.java */ /* Anwendungsklasse fuer die Verarbeitung einfach vorwaerts */ /* verketteter Listen */ /* Stand : 29.04.2002 */ /***************************************************************/ import java.io.*; class Evanw1 { public static void main(String args[]) {int m, i1=1, ir, n, k; Evket ank=null, akt=null, dzakt=null; String kn; kn=new String(); do {m=menue(); switch(m) {case 1: do { System.out.println("Eingabe des Knotenworts:"); kn=IO1.einstring(); if (ank==null) {ank=new Evket(); ank.setFarb(kn); akt=ank; } else {while (akt.nf!=null) {akt=akt.nf; } akt.nf=akt.anhaeng(kn); } System.out.println("Naechsten Knoten erfassen? (ja=1/nein=0)"); i1=IO1.einint(); } while (i1==1); break; case 2: if (ank!=null) { ank.evaus(); } else { System.out.println("Die Liste ist leer."); } break; case 3: System.out.println("Direktzugriff auf einen Knoten:"); n=ank.size(); do { System.out.println("Geben Sie eine Knotennr. k mit 1 <= k <= "+n+" ein!"); k=IO1.einint(); if (k<1||k>n) System.out.println(k+" liegt ausserhalb des zulaessigen Intervalls"); } while(k<1||k>n); dzakt=ank.pos(k,ank); System.out.println(k+". Knoten : Inhalt : "+dzakt.wort); dzakt=null; break; case 4: System.out.println("Hinfügen eines Knotens:"); System.out.println("Eingabe des Knotenworts:"); kn=IO1.einstring(); n=ank.size(); do { System.out.println("Nach welchem Knoten soll eingefügt werden?"); System.out.println("Geben Sie k zwischen 1 und "+n+" ein!"); k=IO1.einint(); if (k<1||k>n) System.out.println(k+" liegt ausserhalb des zulaessigen Intervalls"); } while(k<1||k>n); dzakt=ank.pos(k,ank); ir=dzakt.einhaeng(kn); System.out.println("Neuer Knoten: "+dzakt.nf.wort+" eingefügt (ir="+ir+")."); dzakt=null; break; case 5: System.out.println("Einen neuen Anker setzen:"); System.out.println("Eingabe des Knotenworts für den neuen Anker:"); kn=IO1.einstring(); ank=ank.ankneu(kn); System.out.println("Die Liste im neuen Zustand:"); if (ank!=null) { ank.evaus(); } else { System.out.println("Die Liste ist leer."); } break; case 6: System.out.println("Einen Knoten löschen:"); n=ank.size(); do { System.out.println("Welcher Knoten soll gelöscht werden?"); System.out.println("Geben Sie die Knotennr. k des zu löschenden Knotens mit 2 <= k <= "+n+" ein!"); k=IO1.einint(); if (k<2||k>n) System.out.println(k+" liegt ausserhalb des zulaessigen Intervalls"); } while(k<2||k>n); dzakt=ank.pos(k-1,ank); ir=dzakt.loeschK(); System.out.println("Knoten-Nr.: "+k+" wurde gelöscht (ir="+ir+")."); dzakt=null; break; case 9: System.out.println("E.O.P."); break; default:System.out.println("Unzulässige Eingabe!"); } } while (m!=9); } public static int menue() {int ir; System.out.println("Verarbeiten von einfach vorwaerts verketteten Listen:"); System.out.println("(1) Anlegen einer Liste"); System.out.println("(2) Anzeigen einer Liste"); System.out.println("(3) Direktzugriff auf einen Knoten"); System.out.println("(4) Einen Knoten hinzufügen"); System.out.println("(5) Einen neuen Anker setzen"); System.out.println("(6) Einen Knoten löschen"); System.out.println("(9) ENDE"); System.out.println("Bitte wählen Sie!"); ir=IO1.einint(); return ir; } }