====== Zurück! Die Rückgängig Funktion ====== Wer kennt das nicht, einmal die Katze über die Tastatur gerannt und schon ist das Bild komplett im Eimer: {{ :faecher:informatik:oberstufe:adt:stack:zuerueck:img_20210404_151748.jpg?400 |}} Wir alle wissen, was da hilft: ''STRG+Z'' - Rückgängig! Welches Prinzip steckt hinter dieser Funktion? Das Programm speichert zunächst alle Arbeitsschritte - es stapelt Sie einfach aufeinander: {{ :faecher:informatik:oberstufe:adt:stack:zuerueck:stack_gimp.png |}} Mit der Funktion "Rückgängig" kann man die **letzte Anweisung** zurücknehmen. Woher weiß das Programm, was die letzte Anweisung war? Ganz einfach, das war stets die Anweisung die ganz oben auf dem **Stapel** der Anweisungen liegt. Um die Anweisung rückgängig zu machen, wird sie einfach vom Stapel **heruntergenommen**, eine neue Anweisung wird stets **oben auf den Stapel gelegt**. Wenn mehrerer Arbeitsschritte zurückgenommen werden sollen, werden diese **nacheinander** oben vom Stapel genommen - bis dieser **leer** ist, dann kann nichts mehr rückgängig gemacht werden. Eine solche lineare Datenstruktur heißt **Stapel**: * Ein Stapel funktioniert nach dem Prinzip LIFO: Last In First Out * Elemente können stets nur oben auf den Stapel gelegt werden. * Nur auf das oberste Element kann zugegriffen werden. * Nur das oberste Element kann vom Stapel entfernt werden. * Wenn der Stapel leer ist, kann kein weiteres Element vom Stapel entfernt werden. [[..:linkedstack:start|Weiter zur Implementation >>> ]] ===== Material ===== {{simplefilelist>.:*}}