Pile

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un stack è una struttura dati lineare con una collezione di elementi che segue il principio Last-In-First-Out (LIFO). La parte superiore dello stack è l'elemento più recentemente aggiunto allo stack, e la parte inferiore dello stack è l'elemento che è stato aggiunto meno di recente.

Puoi pensare alla struttura dei dati di stack come un insieme di piastre da cena: inizi con una e poi metti un'altra sopra. Quando prendi i piatti dallo stack, il primo primo che rimuovi dallo stack è l'ultimo ultimo che metti sopra.

Le matrici hanno due operazioni principali: push per aggiungere un elemento alla parte superiore della matrice e pop per rimuovere l'elemento dalla parte superiore della matrice. Le matrici possono avere una dimensione fissa o essere ridimensionate dinamicamente. Le matrici sono utili per l'uso del design come i backtracking algorithm.

Realizzazione di Stack

Anche se Luau non ha tabelle come struttura di dati incorporata, puoi usare tabelle per implementare tabelle. Il seguente esempio di codice mostra come creare una tavola, push un oggetto dalla tavola e pop un og


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Controlla se lo stack è vuoto
function Stack:IsEmpty()
return #self._stack == 0
end
-- Metti un nuovo valore sulla stack
function Stack:Push(value)
table.insert(self._stack, value)
end
-- Rimuovi un valore dallo stack
function Stack:Pop()
if self:IsEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

Il seguente codice di esempio è un esempio di utilizzo come Script sotto Workspace . Puoi modificare il codice, il inserisci / scrivie la posizione di archiviazione per adattarti all'uso personale, fintanto che hai il precedente esempio di codice di implementazione correttamente archiviato.

Esempio di utilizzo della stack

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Cambia il stack Rendimento dello stack Uscita
s:Push(1) -- italian:{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

Se esegui il precedente esempio di codice senza modificare nulla, l'output previsto è:

Output di esempio

10
5
20
1