Eine Schlange durchlaufen
Auch eine Schlange hat keinen Index. Man kommt nur vorn an die Elemente — und kann sie hinten wieder anstellen.
- Rotieren:
x = q.dequeue()und danachq.enqueue(x)— das vorderste Element wandert nach hinten. - Ganze Runde:nach n Rotationen steht jedes Element wieder an seinem alten Platz.
- Anzahl:Man kennt n nicht von vornherein — umladen in eine Hilfsschlange und dabei zählen.
- Filtern:n-mal entnehmen und nur die Elemente wieder anstellen, die bleiben sollen; die Reihenfolge bleibt erhalten.
public void entferneNegative(Queue<Integer> q) {
int n = anzahl(q); // Hilfsmethode wie beim Stapel
for (int i = 0; i < n; i++) {
int x = q.dequeue();
if (x >= 0) {
q.enqueue(x); // behalten: hinten wieder anstellen
}
}
}
Rechenzeit im Rundlauf verteilen
Ein Prozessor kann immer nur ein Programm gleichzeitig ausführen. Damit trotzdem alle vorankommen, wechselt das Betriebssystem reihum — das Rundlauf-Verfahren (Round Robin).
- Warteschlange:alle rechenbereiten Programme stehen in einer Schlange.
- Zeitscheibe q:das vorderste Programm darf höchstens q Takte rechnen.
- Nicht fertig:es wird mit seiner Restzeit hinten wieder angestellt.
- Fertig:es verlässt die Schlange; seine Fertigstellungszeit wird notiert.
Verändere die Zeitscheibe q und die Rechenzeit von Programm A. Mit ▶ läuft die Zeit Takt für Takt — oben siehst du die Schlange, darunter den Zeitstrahl.
Halte fest: Eine kleine Zeitscheibe verteilt die Rechenzeit gerecht, erzeugt aber viele Wechsel. Eine sehr große Zeitscheibe macht aus dem Rundlauf eine einfache Warteschlange ohne Wechsel.
Rundlauf: x = q.dequeue() → x bis zu q Takte rechnen lassen → nicht fertig: q.enqueue(x)
Allgemeine Hinweise
Schleife über n, nicht über isEmpty
Wer beim Rotieren while (!q.isEmpty()) schreibt und wieder anstellt, erzeugt eine Endlosschleife — die Schlange wird nie leer.
Anzahl vorher bestimmen
Beim Filtern ändert sich die Länge. Die Zahl der Durchläufe muss vor der Schleife feststehen.
Tabelle führen
Für Rundlauf-Aufgaben eine Zeile je Zeitscheibe: Zeit, Programm, Restzeit, Schlange danach. So bleibt die Reihenfolge nachvollziehbar.
