Implementieren Sie die dynamische Variante eines Stacks/Kellers für ganze Zahlen. Dynamisch heißt in diesem Fall, dass der Stack beliebig viele Elemente speichern kann. Die Implementierung soll die folgenden Operationen unterstützen:
Push (x) - speichert ein neues Element mit Wert x auf dem Stack
Pop () - entfernt das oberste Element des Stacks und gibt seinen Wert aus
Top () - gibt den Wert des obersten Elements aus
Size () - gibt aus, wie viele Elemente sich im Stack befinden
Der Stack soll mithilfe eines Feldes und eines Stackpointers t implementiert werden, der auf die oberste (bzw. letzte) belegte Zelle zeigt. Läuft das Feld über, dann soll es durch ein doppelt so großes Feld ersetzt werden; sinkt der Pegel des Stacks wieder, dann soll das Feld sinnvoll verkleinert werden. (Bspw. so, dass nach einer pop-Operation nicht mehr als ein Drittel des Felds leer ist.)
Analysieren Sie die Laufzeiten ihrer Methoden.