Lua模拟stack
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
local stack = {} stack.__index = stack function stack:new() local temp = {} setmetatable(temp,stack) stack:init() return temp end function stack:init() self.stackList = {} end function stack:reset() self:init() end function stack:clear() self.stackList = {} end function stack:pop() if #self.stackList == 0 then return end return table.remove(self.stackList) end function stack:push(t) table.insert(self.stackList,t) end function stack:Count() return #self.stackList end return stack
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package.path = package.path ..';..\\?.lua' luaStack = require "luaStack" --测试代码 --push 数字 stack1 = luaStack:new() stack1:push(1) stack1:push(2) stack1:push(3) while (stack1:Count() > 0) -- lua中只有nil 和 false 为假 do print("stack1 now cotain number:"..stack1:Count()) print("pop top number:"..stack1:pop()) end --push 表 stack2 = luaStack:new() a = {1, 2} b = {3, 4} c = {5, 6} stack2:push(a) stack2:push(b) stack2:push(c) while (stack2:Count() > 0) -- lua中只有nil 和 false 为假 do print("stack1 now cotain table:"..stack1:Count()) temp = stack1:pop(); print("pop top table num 1: "..temp[1].." num 2: "..temp[2]) end