Liste.java

import java.io.*;

public class Liste {
  
  private ListenKnoten start;
  
  public Liste() {
    // Konstruktor für leere Liste
    start = null;
  }
  
  public void einfügen(ListenKnoten neu) {
    // fügt Knoten neu an die richtige Stelle ein
    
    // 1. Fall: Liste ist noch leer
    if (start == null) {
      start = neu;
      return;
    }
    
    // 2. Fall: neues Element kommt an den Anfang der Liste
    if (start.daten > neu.daten) {
      neu.naechster = start;
      start = neu;
      return;
    }
    
    // 3. Fall: Liste durchlaufen
    ListenKnoten letzter = start;
    ListenKnoten aktuell = start.naechster;
    
    while ((aktuell != null) && (aktuell.daten < neu.daten)) {
      aktuell = aktuell.naechster;
      letzter = letzter.naechster;
    }
    
    // gefunden, jetzt einfügen
    letzter.naechster = neu;
    if (aktuell != null) {    // neu ist nicht letztes Element
      neu.naechster = aktuell;
    }
  }
  
  public void ausdrucken() {
    ListenKnoten aktuell = start;
    while (aktuell != null) {
      System.out.println(aktuell.daten);
      aktuell = aktuell.naechster;
    }
  }
  
  public static void main(String[] args) throws IOException {
    // Testprogramm mit Zufallszahlen
    
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
    // Anzahl der Werte abfragen
    System.out.println("Anzahl der Listenelemente eingeben:");
    String s = in.readLine();
    int anzahl = Integer.parseInt(s);
    
    // starte mit leerer Liste
    Liste sortierListe = new Liste();
    
    // fülle die Liste
    for (int i = 0; i < anzahl; i++) {
      double wert = Math.random();
      ListenKnoten neu = new ListenKnoten(wert);
      sortierListe.einfügen(neu);
    }
    
    // gib die Liste aus
    sortierListe.ausdrucken();
  }
  
}