棧結構為先進後出型別,filo,類似於彈夾;它的特點在於只允許在棧頂進行插入和刪除操作,另一端為棧底;
乙個棧主要有以下幾個要素
lua中只有乙個資料結構,就是table,所以我們肯定要利用表以及元表來實現乙個stack結構;下面就針對以上理清的要素進行分析;
local stack = {}
local tinsert = table.insert
function stack:create()
local t = {}
setmetatable(t, )
return t
endfunction stack:push(...)
local arg =
self.datatb = self.datatb or {}
if next(arg) then
for i = 1, #arg do
tinsert(self.datatb, arg[i])
endend
endfunction stack:pop(num)
num = num or 1
assert(num > 0, "num必須為正整數")
local poptb = {}
for i = 1, num do
tinsert(poptb, self.datatb[#self.datatb])
table.remove(self.datatb)
endreturn unpack(poptb)
endfunction stack:list()
for i = 1, #self.datatb do
print(i, self.datatb[i])
endendfunction stack:count()
return #self.datatb
endreturn stack
測試**:
local stack = stack:create()
stack:push("hello", "world", "this")
stack:list()
print(stack:count())
print(stack:pop())
print(stack:count())
Lua中C API棧操作
向棧中壓入資料 lua pushnil lua state lua pushboolean lua state bool lua pushnumber lua state lua number lua pushinteger lua state lua integer lua pushlstring...
lua中的sleep實現
這篇文章主要介紹了lua中實現sleep函式功能的4種方法,本文講解了在乙個死迴圈中設定乙個跳出條件方法 呼叫系統的sleep函式法 windows下ping命令法 socket庫中select函式法4種方法,需要的朋友可以參考下 乙個不幸的訊息是lua中沒有內建sleep函式,我們需要diy。有4...
lua中棧的詳細流程
這幾天研究了一下lua,主要關注的是lua和vc之間的整合,把 都寫好放在vc宿主程式裡,然後在lua裡呼叫宿主程式的這些 或者叫介面 元件,隨便你怎麼叫 希望能用指令碼來控制主程式的行為。這實際上也是一種把業務分離,用指令碼控制的架構,可能有些人把這種指令碼叫做業務引擎,工作流等。為什麼選擇lua...