Yığınlar

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir yığın, Son Giren İlk Çıkar (LIFO) ilkesini izleyen bir dizi öğeden oluşan doğrusal bir veri yapısıdır. Yığının en üstü, yığına en son eklenen öğe iken, yığının en altı en az son eklenen öğedir.

Yığın veri yapısını, bir yığın yemek tabağı gibi düşünebilirsiniz: bir tane ile başlarsınız ve sonra bir tane daha onun üzerine koyarsınız. Yığınlardan tabak alırken, yığınından ilk çıkardığınız tabak en son üstüne koyduğunuz tabaktır.

Yığınların iki ana işlemi vardır: yığının en üstüne bir nesne eklemek için push ve yığının en üstünden bir nesne çıkarmak için pop. Bir yığın ya sabit boyutlu olabilir ya da dinamik olarak boyutu değiştirilebilir. Yığınlar, geri izleme algoritmaları gibi tasarım kullanımları için yararlıdır.

Yığınları Uygulama

Luau'da yığınlar yerleşik bir veri yapısı olarak bulunmasa da, yığınları uygulamak için tabloları kullanabilirsiniz. Aşağıdaki kod örneği, bir yığın oluşturmayı, bir nesneyi yığının üstüne push etmeyi ve yığından bir nesneyi pop etmeyi göstermektedir. Bu uygulamayı oyununuzda kullanmak için, bir ModuleScript olarak kaydetmeli ve ReplicatedStorage içinde saklamalısınız, böylece yığınınız hem istemci hem de sunucu için erişilebilir olur.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Yığının boş olup olmadığını kontrol et
function Stack:isEmpty()
return #self._stack == 0
end
-- Yığına yeni bir değer ekle
function Stack:push(value)
table.insert(self._stack, value)
end
-- Yığınından bir değeri 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, Workspace altında bir Script olarak bir kullanım örneğidir. Kodu, türü ve saklama konumunu kendi kullanımınıza uyacak şekilde değiştirebilirsiniz, yeter ki önceki uygulama kod örneğini düzgün bir şekilde saklayın.

Yığın Kullanım Örneği

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Yığını değiştir Elde Edilen yığın Çıktı
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

Eğer önceki kod örneğini hiçbir şeyi değiştirmeden çalıştırırsanız, beklenen çıktı şudur:

Örnek Çıktı

10
5
20
1
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.