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
}
}
}
Schlange durchlaufen: Es gibt keinen Index; man kommt nur vorn an die Elemente und kann sie hinten wieder anstellen.
Rotieren: x = q.dequeue(), dann q.enqueue(x); das vorderste Element wandert nach hinten. Nach n Rotationen steht jedes Element wieder am alten Platz.
Anzahl: In eine Hilfsschlange umladen und dabei zählen.
Filtern: n-mal entnehmen und nur die bleibenden Elemente wieder anstellen; die Reihenfolge bleibt erhalten.
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 (Round Robin): Das Betriebssystem lässt die rechenbereiten Programme reihum arbeiten, damit alle vorankommen.
Ablauf: x = q.dequeue() → x höchstens q Takte rechnen lassen → nicht fertig: mit Restzeit q.enqueue(x); fertig: Programm verlässt die Schlange, Fertigstellungszeit notieren.
Zeitscheibe q: So viele Takte darf das vorderste Programm höchstens rechnen.
Wirkung: Eine kleine Zeitscheibe verteilt gerecht, erzeugt aber viele Wechsel; eine sehr große macht eine einfache Warteschlange daraus.
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.
