Piles

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Une pile est une structure de données linéaire avec une collection d'éléments qui suit le principe du Dernier Entré, Premier Sorti (DEPS). Le sommet de la pile est l'élément le plus récemment ajouté à la pile, et le fond de la pile est l'élément qui a été ajouté le moins récemment.

Vous pouvez penser à la structure de données de la pile comme à une pile d'assiettes : vous commencez avec une, puis vous en mettez une autre au-dessus. Lorsque vous prenez des assiettes de la pile, la première que vous retirez de la pile est la dernière que vous avez mise sur le dessus.

Les piles ont deux opérations principales : push pour ajouter un élément au sommet de la pile et pop pour retirer l'élément du sommet de la pile. Une pile peut avoir une taille fixe ou être redimensionnée dynamiquement. Les piles sont utiles pour des usages de conception tels que les algorithmes de retour en arrière.

Implémenter des piles

Bien que Luau n'ait pas de piles en tant que structure de données intégrée, vous pouvez utiliser des tables pour implémenter des piles. L'exemple de code suivant montre comment créer une pile, push un objet dans une pile, et pop un objet de la pile. Pour utiliser cette implémentation dans votre jeu, vous devez l'enregistrer en tant que ModuleScript et la stocker dans ReplicatedStorage, afin que votre pile soit accessible à la fois pour le client et le serveur.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Vérifiez si la pile est vide
function Stack:isEmpty()
return #self._stack == 0
end
-- Mettre une nouvelle valeur dans la pile
function Stack:push(value)
table.insert(self._stack, value)
end
-- Retirer une valeur de la pile
function Stack:pop()
if self:isEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

L'exemple de code suivant est un exemple d'utilisation en tant que Script sous Workspace. Vous pouvez modifier le code, le type et l'emplacement de stockage pour l'adapter à votre propre utilisation, tant que vous avez correctement enregistré l'exemple de code d'implémentation précédent.

Exemple d'utilisation de la pile

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Changer la pile Pile résultante Sortie
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

Si vous exécutez l'exemple de code précédent sans rien changer, la sortie attendue est :

Sortie Exemple

10
5
20
1
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.