*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

堆疊是一個線性的資料結構,包含跟隨最後一個「最後一次」(LIFO)原則的項目。堆疊的頂部是最近添加到堆疊的項目,底部是最近添加到堆疊的項目。

您可以將杯子資料結構想像為一個杯子盤的堆疊:你從一個開始,然後將另一個放在它上面。當你從堆疊中拿取一個杯子時,第一個是你從堆疊上移除的,然後你將它放在頂部。

堆有兩個主要操作:推 為添加元素到堆的頂部,pop 為移除元素。堆可以有固定大小或動態調整大小。堆有幾個有用的設計用途,例如返回跟蹤算法。

實現堆疊

雖然 Luau 不具有預設的資料結構為「杯子」,您可以使用 桌子 來實現杯子。下列代碼示範顯示了如何在 push 一個對象到杯子,以及


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- 檢查堆是否為空
function Stack:IsEmpty()
return #self._stack == 0
end
-- 將新值放在堆疊上
function Stack:Push(value)
table.insert(self._stack, value)
end
-- 從堆中拿一個值
function Stack:Pop()
if self:IsEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

下列代碼示例是在 Script 下使用 Workspace 的使用例。您可以修改代碼、類輸入和存儲位置,以適合您自己的使用,只要您有正確儲存 Class.Script 的代碼。

堆疊使用範例

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- 變更堆疊結果堆疊輸出
s:Push(1) --
s:Push(5) -- ,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

如果您沒有變更任何內容,以前的代碼示例將輸出:

輸出範例

10
5
20
1