Một đống là một cấu trúc dữ liệu lineal với một bộ sưu tập các mục được theo nguyên tắc Last-In-First-Out (LIFO). Phần trên của đống là mục đã gần đây nhất được thêm vào đống, và phần dưới của đống là mục đã gần đây nhất được thêm.
Bạn có thể nghĩ về cấu trúc dữ liệu hàng tumpuk như một tumpuk những món ăn tối: bạn bắt đầu với một, và sau đó bạn đặt một trên nó. Khi bạn lấy các món ăn từ tumpuk, đầu tiên mà bạn bỏ rơi từ tumpuk là cuối cùng mà bạn đặ
Các tầng có hai hoạt động chính: push để thêm một yếu tố vào đầu của tầng và pop để loại bỏ yếu tố ra khỏi đầu của tầng. Một tầng có thể có kích thước cố định hoặc được thay đổi động적. Tầng hữu ích cho mục đích thiế
Tích hợp các tầng
Mặc dù Luau không có các tấm dữ liệu như một cấu trúc dữ liệu tích hợp, bạn vẫn có thể sử dụng bảng để thực hiện các tấ
local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Kiểm tra xem có phải đống những gì không
function Stack:IsEmpty()
return #self._stack == 0
end
-- Đặt một giá trị mới vào dàn
function Stack:Push(value)
table.insert(self._stack, value)
end
-- Lấy một giá trị khỏi dàn
function Stack:Pop()
if self:IsEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack
Mẫu mã code sau đây là một ví dụ sử dụng như một Script dưới Workspace . Bạn có thể điều chỉnh mã, đánh máyvà vị trí lưu để phù hợp với sử dụng của riêng bạn, miễn là bạn có một mẫu mã thực hiện chính xác được lưu.
Ví dụ về sử dụng Stack
local ReplicatedStorage = game:GetService("ReplicatedStorage")local Stack = require(ReplicatedStorage:WaitForChild("Stack"))local s = Stack.new()-- Thay đổi nút bấm tay Cấu hình nút bấm tays:Push(1) -- của {1}s:Push(5) -- của {1, 5}s:Push(10) -- của {1, 5, 10}print(s:Pop()) -- :{1, 5} 10print(s:Pop()) -- :{1} 5s:Push(20) -- cộng {1, 20}print(s:Pop()) -- của {1} 20print(s:Pop()) -- {} 1
Nếu bạn chạy mẫu mã mã trước đó mà không thay đổi bất cứ điều gì, kết quả dự kiến là:
Thông Báo Về Kết Quả
105201