Einen Stapel kann man folgendermaßen modellieren:
Das sieht also ganz ähnlich aus, wie bei der verketteten Liste. Auch der Stapel/Stack arbeitet mit einer Struktur von Knoten, die "aufeinander zeigen", er kann also wie die Liste beliebig viele Objekte verwalten. Der Stapel muss sich jedoch in seinem Attribut head
nur eine Referenz merken - die auf den obersten Knoten des Stapels. Alle Operationen des Stacks finden immer auf diesem obersten Knoten statt:
Zu implementieren sind also die Operationen push
, pop
, top
und isEmpty
. Hier: https://codeberg.org/qg-info-unterricht/bluej-linked-stack findest du eine BlueJ-Vorlage, in der du arbeiten kannst.
LinkedStack
head
muss stets auf den obersten Node des Stacks zeigenNode<T>
(schau nach was der Diamantoperator macht, wenn du das nicht mehr weißt).head
?
Erweitere die Klasse so, dass es sinnvoll möglich ist, ein neues Stack Objekt zu erzeugen.
Das folgende Schaubild veranschaulicht den Vorgang, wenn ein neues Element auf den Stapel gelegt werden soll.
Implementiere und teste die Push-Methode.
Erstelle ein Schaubild wie oben, welches den Vorgang beim Entfernen eines Elements vom Stapel veranschaulicht.
Implementiere und teste die Pop-Methode.
Vervollständige und teste die fehlenden Methoden.
Passe deinen Stack und die Knoten-Klasse so an, dass die Knotenattribute "private" sind. Welche Methoden benötigst du dann in der Klasse Node
? Wie wirkt sich das auf deinen übrigen Code in der Klasse LinkedList aus?
Filename | Filesize | Last modified |
---|---|---|
klassendiagramm.png | 30.2 KiB | 06.10.2021 18:11 |
push.png | 81.7 KiB | 06.10.2021 18:55 |
stack02.odp | 134.4 KiB | 06.10.2021 18:41 |
stack02.pdf | 137.8 KiB | 06.10.2021 18:41 |
stack03.png | 50.9 KiB | 06.10.2021 18:14 |