Pilhas

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Uma pilha é uma estrutura de dados linear com uma coleção de itens que segue o princípio Last-In-First-Out (LIFO). O topo da pilha é o item adicionado mais recentemente à pilha, e a parte inferior da pilha é o item que foi adicionado menos recentemente.

Você pode pensar na estrutura de dados de pilha como uma pilha de pratos de jantar: você começa com um, e então coloca outro acima dele. Quando você retira pratos da pilha, o primeiro que você remove da pilha é o último que você colocou no topo.

Pilhas têm duas operações principais: push para adicionar um elemento ao topo da pilha e pop para remover o elemento do topo da pilha. Uma Pilha pode ter um tamanho fixo ou ser redimensionada dinamicamente. Pilhas são úteis para usos de design como algoritmos de retrocesso.

Implementar pilhas

Embora Luau não tenha pilhas como uma estrutura de dados embutida, você pode usar tabelas para implementar pilhas. O seguinte exemplo de código mostra como criar uma pilha, push um objeto para uma pilha e pop um objeto da pilha. Para usar esta implementação em seu jogo, você deve salvá-la como um ModuleScript e armazená-la em ReplicatedStorage, para que sua pilha seja acessível tanto para o cliente quanto para o servidor.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Verifica se a pilha está vazia
function Stack:isEmpty()
return #self._stack == 0
end
-- Coloca um novo valor na pilha
function Stack:push(value)
table.insert(self._stack, value)
end
-- Retira um valor da pilha
function Stack:pop()
if self:isEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

O seguinte exemplo de código é um exemplo de uso como um Script sob Workspace. Você pode modificar o código, tipo e local de armazenamento para se adequar ao seu próprio uso, desde que você tenha o código de implementação anterior devidamente armazenado.

Exemplo de Uso da Pilha

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Mudar a pilha Pilha resultante Saída
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

Se você executar o exemplo de código anterior sem mudar nada, a saída esperada é:

Exemplo de Saída

10
5
20
1
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.