Tumpukan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tumpukan adalah struktur data linier dengan koleksi item yang mengikuti prinsip Last-In-First-Out (LIFO). Puncak tumpukan adalah item yang paling baru ditambahkan ke tumpukan, dan dasar tumpukan adalah item yang paling sedikit baru ditambahkan.

Anda dapat memikirkan struktur data tumpukan sebagai tumpukan piring makan: Anda mulai dengan satu, dan kemudian Anda meletakkan satu lagi di atasnya. Ketika Anda mengambil piring dari tumpukan, yang pertama Anda ambil dari tumpukan adalah yang terakhir Anda letakkan di atas.

Tumpukan memiliki dua operasi utama: push untuk menambahkan elemen ke atas tumpukan dan pop untuk menghapus elemen dari atas tumpukan. Tumpukan dapat memiliki ukuran tetap atau diubah ukurannya secara dinamis. Tumpukan berguna untuk penggunaan desain seperti algoritma pencarian mundur.

Mengimplementasikan tumpukan

Meskipun Luau tidak memiliki tumpukan sebagai struktur data bawaan, Anda dapat menggunakan tabel untuk mengimplementasikan tumpukan. Contoh kode berikut menunjukkan cara membuat tumpukan, push objek ke tumpukan, dan pop objek dari tumpukan. Untuk menggunakan implementasi ini untuk permainan Anda, Anda harus menyimpannya sebagai ModuleScript dan menyimpannya di ReplicatedStorage, sehingga tumpukan Anda dapat diakses oleh klien dan server.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Periksa apakah tumpukan kosong
function Stack:isEmpty()
return #self._stack == 0
end
-- Masukkan nilai baru ke dalam tumpukan
function Stack:push(value)
table.insert(self._stack, value)
end
-- Ambil nilai dari tumpukan
function Stack:pop()
if self:isEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

Contoh kode berikut adalah contoh penggunaan sebagai Script di bawah Workspace. Anda dapat memodifikasi kode, jenis, dan lokasi penyimpanan sesuai penggunaan Anda sendiri, asalkan Anda memiliki contoh kode implementasi sebelumnya yang disimpan dengan benar.

Contoh Penggunaan Tumpukan

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Ubah tumpukan Tumpukan yang dihasilkan Output
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

Jika Anda menjalankan contoh kode sebelumnya tanpa mengubah apapun, hasil yang diharapkan adalah:

Contoh Output

10
5
20
1
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.