Bir çığır, Last-In-First-Out (LIFO) ilkesine uyan bir koleksiyonu takip eden öğelerle dolu lineer bir veri yapısıdır. Çığırın üst kısmı, en son eklenen öğedir ve çığırın alt kısmı, en az sonra eklenen öğedir.
Stacker veritabanı yapısını bir yemek tabaklarının üstüne bir yığın olarak düşünebilirsiniz: birini başlangıç için kullanır, sonra diğerini üstüne koyarsınız. Stacker'ın tabanından aldığınız ilk bir tane, üstteki son tane olur.
Yığınların iki ana işlemi vardır: push bir elemanı yığının üstüne eklemek için ve pop yığının üstünden kaldırmak için. Bir Stack'in sabit bir boyutu veya dinamik olarak yeniden boyutlandırılabilir olmasıdır. Yığınlar arka takip algoritmaları gibi tasarım kullanımı için yararlıd
Stacks'ın Uygulanması
Luau'nun bir yerleşik veri yapısı olarak küme olmadığını, ancak kümelere implementasyon için tablolar kullanabilirsiniz. Aşağıdaki kod örneği, bir kümeyi nasıl o
local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Stacks boş olduğunu kontrol et
function Stack:IsEmpty()
return #self._stack == 0
end
-- Yeni bir değerin üstüne koy
function Stack:Push(value)
table.insert(self._stack, value)
end
-- Stakttan bir değer al
function Stack:Pop()
if self:IsEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack
Aşağıdaki kod örneği, Script olarak kullanım örneğidir altında Workspace . Kodu, yazve depolama konumunu kendi kullanımınıza göre değiştirebilirsiniz, as long as you have the previous implementation code sample properly stored.
Stack Kullanımı Örneği
local ReplicatedStorage = game:GetService("ReplicatedStorage")local Stack = require(ReplicatedStorage:WaitForChild("Stack"))local s = Stack.new()-- Stak ile sonuçlanan stak ile sonuçlanan çıkışıs:Push(1) --s:Push(5) -- :{1, 5}s:Push(10) -- :{1, 5, 10}print(s:Pop()) -- :{1, 5} 10print(s:Pop()) -- 5s:Push(20) -- :{1, 20}print(s:Pop()) -- {1} 20print(s:Pop()) -- {} 1
Önceki kod örneğini hiç değiştirmeden çalıştırırsanız beklenen çıktı:
Örnek Çıkış
105201