Stacks

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Ein Stack ist eine lineare Datenstruktur mit einer Sammlung von Elementen, die dem Last-In-First-Out (LIFO) Prinzip folgt. Der obere Teil des Stacks ist das Element, das zuletzt zum Stack hinzugefügt wurde, und der untere Teil des Stacks ist das Element, das am längsten nicht hinzugefügt wurde.

Man kann sich die Stack-Datenstruktur wie einen Stapel von Essenstellern vorstellen: Man beginnt mit einem Teller und legt dann einen weiteren darüber. Wenn man Teller vom Stapel nimmt, ist der ** erste ** Teller, den man vom Stapel entfernt, der ** letzte **, den man oben aufgelegt hat.

Stacks haben zwei Hauptoperationen: push zum Hinzufügen eines Elements an die Spitze des Stacks und pop zum Entfernen des Elements von der Spitze des Stacks. Ein Stack kann entweder eine feste Größe haben oder dynamisch angepasst werden. Stacks sind nützlich für Designanwendungen wie Rückverfolgungsalgorithmen.

Stacks implementieren

Obwohl Luau keine Stacks als integrierte Datenstruktur hat, kann man Tabellen verwenden, um Stacks zu implementieren. Das folgende Codebeispiel zeigt, wie man einen Stack erstellt, ein Objekt auf einen Stack push und ein Objekt vom Stack pop. Um diese Implementierung für dein Spiel zu verwenden, solltest du sie als ModuleScript speichern und in ReplicatedStorage ablegen, damit dein Stack sowohl für den Client als auch für den Server zugänglich ist.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Überprüfen, ob der Stack leer ist
function Stack:isEmpty()
return #self._stack == 0
end
-- Einen neuen Wert auf den Stack legen
function Stack:push(value)
table.insert(self._stack, value)
end
-- Einen Wert vom Stack nehmen
function Stack:pop()
if self:isEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

Das folgende Codebeispiel ist ein Anwendungsbeispiel als Script unter Workspace. Du kannst den Code, den Typ und den Speicherort an deine eigenen Anforderungen anpassen, solange du den vorherigen Implementierungscode ordnungsgemäß gespeichert hast.

Beispiel zur Verwendung des Stacks

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Den Stack ändern Resultierender Stack Ausgabe
s:push(1) -- {1}
s:push(5) -- {1, 5}
s:push(10) -- {1, 5, 10}
print(s:pop()) -- {1, 5} 10
print(s:pop()) -- {1} 5
s:push(20) -- {1, 20}
print(s:pop()) -- {1} 20
print(s:pop()) -- {} 1

Wenn du das vorherige Codebeispiel ohne Änderungen ausführst, ist die erwartete Ausgabe:

Beispielausgabe

10
5
20
1
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.