Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
faecher:informatik:oberstufe:adt:queue:array_queue:start [11.11.2021 07:11] – sbel | faecher:informatik:oberstufe:adt:queue:array_queue:start [23.04.2024 10:04] (aktuell) – Frank Schiebel |
---|
====== Alternative Implementation einer Schlange als Array ====== | ====== Alternative Implementation einer Schlange als Array ====== |
| |
Da es sich bei einer Schlange um einen asbtrakten Datentyp handelt, spielt es für die Funktionalität keine Rolle, wie die Elemente im Hintergrund verwaltet werden. | Da es sich bei einer Schlange um einen abstrakten Datentyp handelt, spielt es für die Funktionalität keine Rolle, wie die Elemente im Hintergrund verwaltet werden. |
{{ :faecher:informatik:oberstufe:adt:queue:array_queue:queue_array.png|}} | {{ :faecher:informatik:oberstufe:adt:queue:array_queue:queue_array.png|}} |
Die Elemente der Queue können auch in einem Array gespeichert werden. Dabei merkt man sich mit Hilfe zweier Attribute ''first'' und ''last'', welcher Bereich des Arrays die Queue repräsentiert. | Die Elemente der Queue können auch in einem Array gespeichert werden. Dabei merkt man sich mit Hilfe zweier Attribute ''first'' und ''last'', welcher Bereich des Arrays die Queue repräsentiert. |
* Wenn nach dem Einfügen eines neuen Wertes ''first'' und ''last'' gleich sind, ist das Array //"voll"// (Beispiel 5). Damit später weiterhin Elemente eingefügt werden können, muss das Array vergrößert werden. Man erzeugt ein neues Array, das z.B. doppelt so groß ist und kopiert die alten Werte ins neue Array. Dann passt man die Indizes ''first'' und ''last'' passend an. | * Wenn nach dem Einfügen eines neuen Wertes ''first'' und ''last'' gleich sind, ist das Array //"voll"// (Beispiel 5). Damit später weiterhin Elemente eingefügt werden können, muss das Array vergrößert werden. Man erzeugt ein neues Array, das z.B. doppelt so groß ist und kopiert die alten Werte ins neue Array. Dann passt man die Indizes ''first'' und ''last'' passend an. |
| |
Implementieren die Klasse ''ArrayQueue'' nach diesem Prinzip und führe die Tests der zugehörigen Testklasse aus. | Implementiere die Klasse ''ArrayQueue'' nach diesem Prinzip und führe die Tests der zugehörigen Testklasse aus. Eine entsprechende Codevorlage [[ https://codeberg.org/qg-info-unterricht/bluej-array-queue|findest du hier]]. |
| |
| |
**Hinweis:** In Java kann man kein Array eines generischen Typs erzeugen. Stattdessen erzeugt man ein Object-Array und führt beim Auslesen einen Cast zum generischen Typ T aus: | **Hinweis:** In Java kann man kein Array eines generischen Typs erzeugen. Stattdessen erzeugt man ein Object-Array und führt beim Auslesen einen Cast zum generischen Typ T aus: |
Object[] daten = new Object[10]; | Object[] daten = new Object[10]; |
... | ... |
T front = (T)daten[5]; | T myValue = (T)daten[5]; |
</code> | </code> |