Lua中棧的實現

2021-10-03 05:39:36 字數 1171 閱讀 6619

棧結構為先進後出型別,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...