Keranjang

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

Sekumpulan 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 bagian bawah tumpukan adalah item yang paling baru ditambahkan.

Anda dapat memikirkan struktur data tumpukan sebagai tumpukan piring makan malam: Anda mulai dengan satu, lalu Anda menempatkan yang lain di atasnya.Ketika Anda mengambil piring dari tumpukan, pertama yang Anda hapus dari tumpukan adalah terakhir yang Anda letakkan di atas.

Tumpukan memiliki dua operasi utama: dorong untuk menambahkan elemen ke bagian atas tumpukan dan pop untuk menghapus elemen dari bagian atas tumpukan.Tumpukan dapat memiliki ukuran tetap atau diubah secara dinamis.Tumpukan berguna untuk penggunaan desain seperti algoritma pelacakan kembali.

Menerapkan tumpukan

Meskipun Luau tidak memiliki tumpukan sebagai struktur data bawaan, Anda dapat menggunakan tabel untuk menerapkan tumpukan.Contoh kode berikut menunjukkan cara membuat tumpukan, push objek ke tumpukan, dan pop objek dari tumpukan.Untuk menggunakan implementasi ini untuk pengalaman 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
-- Tetapkan nilai baru ke atas 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, ketik, dan lokasi penyimpanan untuk sesuai dengan penggunaan Anda sendiri, selama Anda memiliki sampel kode implementasi sebelumnya yang disimpan dengan benar.

Contoh Penggunaan Stack

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Ubah hasil tumpukan Hasil tumpukan berubah 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 sampel kode sebelumnya tanpa mengubah apa pun, output yang diharapkan adalah:

Contoh Output

10
5
20
1

Di halaman ini