Du kennst dich jetzt bestens mit Datenstrukturen aus – aber was sind denn Stacks nun wieder? Das ist garnicht so schwer zu verstehen, wir erklären es dir in diesem Beitrag!
Inhaltsübersicht
Stacks als befüllbare Stapelspeicher
Der Stack ist genau, was der Name schon vermuten lässt: Ein Stapel. Du kannst ihn dir vorstellen wie einen Stapel Boxen, der auf einen LKW verladen werden soll. Im Moment liegen deine Boxen noch im Lager und sind leer. Nun müssen wir aber noch unsere Ware darin verpacken und sie dann verladen.
Funktion nach dem LIFO-Prinzip
Dazu schaffen wir sie erst einmal auf eine Palette und stapeln sie dort. Dieser Stapel ist der Stack und unsere Kartons sind die Funktionen unseres Programms. Immer, wenn wir nun eine Kiste auf die andere stapeln, verlieren wir den Zugriff zur vorherigen und können erst wieder auf diese zugreifen, wenn wir die darauf liegende herunternehmen. Diesen Umstand nennt man das Last-in-First-Out Prinzip.
Studyflix vernetzt: Hier ein Video aus einem anderen Bereich
Stacks Optionen
Auf unsere Kartons bezogen haben wir, sobald sie auf unserem Stapel liegen, also folgende Optionen:
push, bei der wir eine neue Kiste oben auflegen, pop, bei der wir die oberste Kiste befüllen und verladen und top, bei der wir nur überprüfen, ob die oberste Kiste bereits befüllt ist.
Auf unsere C-Programme übertragen heißt das also: Wer zuletzt kommt, malt zuerst! Die Funktion, die als letztes aufgerufen wurde, wird zuerst abgearbeitet, eventuell deren Rückgabewert zurückgegeben und dann „gelöscht“. Erst dann wird die zuvor aufgerufene Funktion verarbeitet.
Organisieren von Werten mithilfe von Stacks
Stacks verwalten aber nicht nur Funktionen. Du kannst in C auch Werte auf diese Weise organisieren. Du kannst einen Stack nämlich recht simpel als einfach verkettete Liste oder als dynamisches Array verwirklichen.
Als Letztes solltest du noch eines wissen: Manche Professoren verwenden für diese Strukturen auch gern einmal den alten, deutschen Fachbegriff. Dann kennst du diese Struktur unter dem Namen: Kellerspeicher.
Jetzt weißt du wie du Werte mithilfe von Stacks organisieren kannst und welche Operationen es gibt.
Stacks — häufigste Fragen
(ausklappen)
Stacks — häufigste Fragen
(ausklappen)-
Was macht ein Stack?Ein Stack ist eine Datenstruktur, in der man Elemente wie auf einem Stapel ablegt und nur oben zugreift: Das zuletzt abgelegte Element wird zuerst wieder entnommen (LIFO). Typische Operationen sind
push()(oben ablegen),pop()(oben entfernen) undtop()(oberstes Element ansehen). -
Was ist der Unterschied zwischen pop und top?Bei
pop()wird das oberste Element vom Stack entfernt und normalerweise als Ergebnis zurückgegeben. Beitop()wird nur das aktuelle oberste Element ausgelesen, ohne den Stack zu verändern, sodass danach noch dasselbe Element oben liegt. -
Was passiert, wenn man bei einem leeren Stack pop macht?Bei einem leeren Stack kann
pop()kein Element entfernen, die Operation ist dann ein Fehler. Wie sich das auswirkt, hängt von der Umsetzung ab: Manche Implementierungen liefern einen Fehlercode oder brechen ab, in C kann ohne Prüfung auch undefiniertes Verhalten bis zum Absturz auftreten. -
Was bedeutet es, dass eine Funktion nach dem Rückgabewert vom Stack „gelöscht“ wird?„Gelöscht“ bedeutet bei einem Funktionsaufruf, dass nach dem Zurückgeben des Rückgabewerts der zugehörige Eintrag dieser Funktion vom Stack entfernt wird. Damit sind die dort abgelegten Informationen wie Rücksprungadresse und lokale Variablen nicht mehr gültig, und die Ausführung geht in der aufrufenden Funktion weiter.
Nach Beantwortung speichern wir deine Antwort, um Studyflix zu verbessern. Mehr dazu erfährst du in unserer Datenschutzerklärung.
Datenstrukturen verstehen
Stacks gehören zu den wichtigsten Datenstrukturen in der Programmierung und tauchen in vielen Programmen direkt oder indirekt auf. Du ordnest Datenstrukturen nach ihrem Zugriffsmuster und ihrer typischen Nutzung im Code. So erkennst du schneller, wann LIFO sinnvoll ist und wann du besser eine andere Struktur wählst. Weitere Videos dazu findest du in unserem Informatikbereich.