listen:trennungstrukturdaten:letztesloeschenloesung:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
listen:trennungstrukturdaten:letztesloeschenloesung:start [2024/09/19 07:52] – angelegt Martin Pabst | listen:trennungstrukturdaten:letztesloeschenloesung:start [2024/10/04 06:42] (aktuell) – Martin Pabst | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
<script type=" | <script type=" | ||
- | Supermarktkasse s = new Supermarktkasse(); | + | Warteschlange w = new Warteschlange(); |
- | s.hintenAnstellen(new Kunde(" | + | |
- | s.hintenAnstellen(new Kunde(" | + | |
- | s.hintenAnstellen(new Kunde(" | + | |
- | s.hintenAnstellen(new Kunde(" | + | |
- | println(s.gibDenNtenKunden(2).name); | + | w.hintenAnstellen(new Kunde(" |
+ | w.hintenAnstellen(new Kunde(" | ||
+ | w.hintenAnstellen(new Kunde(" | ||
+ | w.löscheLetztesElement(); | ||
+ | println(w.getSize()); | ||
- | class Supermarktkasse | + | println(w.erstenEntnehmen().getName()); |
+ | println(w.erstenEntnehmen().getName()); | ||
+ | |||
+ | |||
+ | |||
+ | class Warteschlange | ||
+ | |||
| | ||
| | ||
- | void hintenAnstellen(Kunde kunde) { | + | |
+ | | ||
+ | if(anfang == null) return false; | ||
+ | return anfang.hatKunde(name); | ||
+ | } | ||
+ | |||
+ | int getSize() { | ||
+ | if(anfang == null) return 0; | ||
+ | |||
+ | return anfang.getSizeRekursiv(); | ||
+ | |||
+ | } | ||
+ | |||
+ | void löscheLetztesElement() { | ||
+ | if(anfang == null) return; | ||
+ | |||
+ | anfang = anfang.löscheLetztenUndGibMeinenNachfolgerZurück(); | ||
+ | |||
+ | // Attribut ende neu setzen | ||
if(anfang == null) { | if(anfang == null) { | ||
- | anfang = new Knoten(kunde); | + | ende = null; |
- | ende = anfang; | + | |
| | ||
} | } | ||
- | | + | |
- | ende.setNachfolger(neuerKnoten); | + | |
- | ende = neuerKnoten; | + | |
} | } | ||
- | | + | /** |
- | | + | * Für n == 0 wird der erste Kunde zurückgegeben, |
- | anfang = erster.getNachfolger(); | + | * für n == 1 der zweite usw. |
- | return | + | */ |
+ | Kunde gibDenNtenWert(int n) { | ||
+ | |||
+ | | ||
+ | |||
+ | return | ||
} | } | ||
+ | |||
- | int getAnzahlIterativ() { | + | Kunde erstenEntnehmen() { |
- | if(anfang == null) { | + | |
- | | + | if(anfang == ende) { |
+ | if(anfang == null) return | ||
+ | ende = null; | ||
} | } | ||
- | |||
- | int anzahl = 1; | ||
- | Knoten aktuellerKnoten = anfang; | ||
- | while (aktuellerKnoten.getNachfolger() != null) { | ||
- | | ||
- | | ||
- | } | ||
- | |||
- | return anzahl; | ||
- | } | ||
+ | Knoten alterErsterKnoten = anfang; | ||
- | int getAnzahlRekursiv() { | + | |
- | if(anfang == null) return 0; | + | |
- | return | + | |
- | } | + | return |
- | Kunde gibDenNtenKunden(int n) { | ||
- | if(n == 0) return anfang.getDaten(); | ||
- | return anfang.gibDenNtenKunden(n); | ||
} | } | ||
- | | + | |
- | // Liste leer? | + | |
- | if(anfang == null) return; | + | |
- | | + | |
- | if(anfang.getNachfolger() | + | |
- | anfang | + | if(ende == null) { |
- | ende = null; | + | ende = neuerKnoten; |
+ | anfang | ||
| | ||
} | } | ||
+ | | ||
+ | ende.setNachfolger(neuerKnoten); | ||
+ | ende = neuerKnoten; | ||
- | // Liste enthält mindestens zwei Elemente: | ||
- | ende = anfang.letztesElementLöschenUndNeuesLetztesZurückliefern(); | ||
} | } | ||
+ | |||
} | } | ||
class Knoten { | class Knoten { | ||
- | | + | private |
- | | + | private |
| | ||
- | this.daten = kunde; | + | this.kunde = kunde; |
} | } | ||
+ | |||
+ | | ||
+ | if(kunde.getName() == name) return true; | ||
- | | + | |
- | // Falls der Nachfolger das letzte Element ist: lösche ihn | + | |
- | | + | |
- | | + | |
- | return | + | |
- | } | + | |
- | return nachfolger.letztesElementLöschenUndNeuesLetztesZurückliefern(); | + | return nachfolger.hatKunde(name); |
} | } | ||
- | int getAnzahl() { | + | |
- | if(nachfolger == null) return | + | |
- | return nachfolger.getAnzahl() + 1; | + | |
+ | if(nachfolger == null) return | ||
+ | |||
+ | return nachfolger.getLetztenKnoten(); | ||
} | } | ||
+ | | ||
+ | | ||
+ | if(nachfolger == null) return null; | ||
+ | |||
+ | nachfolger = nachfolger.löscheLetztenUndGibMeinenNachfolgerZurück(); | ||
+ | |||
+ | return this; | ||
+ | |||
+ | } | ||
+ | |||
+ | Kunde gibDenNtenWert(int n) { | ||
+ | if(n == 0) return kunde; | ||
+ | |||
+ | if(nachfolger == null) return null; | ||
+ | |||
+ | return nachfolger.gibDenNtenWert(n - 1); | ||
+ | } | ||
+ | |||
+ | int getSizeRekursiv() { | ||
+ | if(nachfolger == null) return 1; | ||
+ | return nachfolger.getSizeRekursiv() + 1; | ||
+ | } | ||
| | ||
return nachfolger; | return nachfolger; | ||
Zeile 111: | Zeile 154: | ||
} | } | ||
- | | + | |
- | return | + | return |
- | } | + | |
- | + | ||
- | Kunde gibDenNtenKunden(int n) { | + | |
- | if(n == 1) return daten; | + | |
- | if(nachfolger != null) { | + | |
- | | + | |
- | } | + | |
- | + | ||
- | // Fehler: n ist zu groß! | + | |
- | return null; | + | |
} | } | ||
} | } | ||
+ | |||
class Kunde { | class Kunde { | ||
- | | + | |
- | + | | |
| | ||
this.name = name; | this.name = name; | ||
} | } | ||
+ | |||
+ | | ||
+ | return name; | ||
+ | } | ||
+ | |||
} | } | ||
</ | </ |
listen/trennungstrukturdaten/letztesloeschenloesung/start.1726732374.txt.gz · Zuletzt geändert: 2024/09/19 07:52 von Martin Pabst