Die 12 häufigsten Fehler
1Das letzte Element wird an Index getLength() gesucht
So wird es oft gemacht: l.getItem(l.getLength())
Richtig ist: l.getItem(l.getLength() - 1) — die Zählung beginnt bei 0.
Letzter Index = Länge minus 1.
2insertAt und setItem werden verwechselt
So wird es oft gemacht: Auf [A, B, C] ergibt insertAt(1, "X") die Reihung [A, X, C].
Richtig ist: [A, X, B, C] — insertAt schiebt ein, erst setItem würde B ersetzen.
insertAt: Länge + 1 · setItem: Länge bleibt.
3Beim Löschen vorwärts wird ein Element übersprungen
So wird es oft gemacht: Vorwärts-for mit delete(i) auf [1, 1, 5] ergibt [1, 5].
Richtig ist: Rückwärts laufen: aus [1, 1, 5] wird [5].
Löschen in der Schleife: von hinten nach vorn.
4Die Schleife läuft einen Index zu weit
So wird es oft gemacht: for (int i = 0; i <= l.getLength(); i++)
Richtig ist: i < l.getLength() — sonst Laufzeitfehler im letzten Durchlauf.
Kleiner als die Länge, nicht kleiner gleich.
5Texte werden mit == verglichen
So wird es oft gemacht: if (l.getItem(i) == name)
Richtig ist: if (l.getItem(i).equals(name))
Zeichenketten immer mit equals vergleichen.
6pop und top werden verwechselt
So wird es oft gemacht: Zweimal top() liefert nacheinander die beiden obersten Elemente.
Richtig ist: top() liefert zweimal dasselbe; erst pop() entnimmt.
pop entnimmt, top schaut nur.
7Entnehmen ohne isEmpty-Prüfung
So wird es oft gemacht: String x = s.pop(); auf einem möglicherweise leeren Stapel
Richtig ist: if (!s.isEmpty()) { String x = s.pop(); }
Vor pop, top, dequeue und head: isEmpty prüfen.
8Der Stapel wird nach dem Durchsehen nicht zurückgeladen
So wird es oft gemacht: Nach dem Zählen mit pop ist der Originalstapel leer.
Richtig ist: Alles vom Hilfsstapel zurückladen, dann erst return.
Umladen · bearbeiten · zurückladen.
9Die Klammerprüfung vergisst das Ende
So wird es oft gemacht: (() gilt als korrekt, weil jede schließende Klammer gepasst hat.
Richtig ist: Am Ende muss isEmpty() gelten — hier liegt noch ( im Stapel.
Korrekt heißt auch: Stapel am Ende leer.
10Neue Elemente landen gedanklich vorn
So wird es oft gemacht: Nach enqueue("Z") liefert head() den Wert Z.
Richtig ist: Z steht hinten; head() liefert weiter das vorderste Element.
enqueue hinten, dequeue und head vorn.
11Rotation mit while (!q.isEmpty())
So wird es oft gemacht: while (!q.isEmpty()) { q.enqueue(q.dequeue()); }
Richtig ist: Die Länge bleibt gleich — Endlosschleife. Stattdessen n-mal mit vorher bestimmtem n rotieren.
Anzahl der Durchläufe vorher festlegen.
12Die Struktur wird nach der Art der Daten gewählt
So wird es oft gemacht: „Für Zahlen nimmt man ein DynArray, für Aufträge eine Schlange.“
Richtig ist: Entscheidend ist die Reihenfolge des Zugriffs: beliebig, neuestes zuerst oder ältestes zuerst.
Wählen nach dem Zugriff, nicht nach dem Inhalt.
