用Lua实现的简单的Stack和Queue。
Stack
用Lua实现的Stack结构,支持Push
、Pop
、Peek
、Count
四个方法,并且可以通过tostring
列出内部数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function LuaStack() return setmetatable({_data = {}},_LuaStackMeta); end
_LuaStackMeta = { __index = { Push = function(self,x) table.insert(self._data,x); end; Pop = function (self) return table.remove(self._data); end; Peek = function(self) return self._data[#self._data]; end; Count = function(self) return #self._data; end; }; __tostring = function(self) local str = "-----\n"; for i,v in ipairs(self._data) do str = str .. i .. " " ..tostring(v) .. "\n"; end return str .. "-----"; end }
|
Queue
用Lua实现的Queue结构,支持Enque
、Deque
、Count
三个方法,并且可以通过tostring
列出内部数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function LuaQueue() return setmetatable({_data = {}},_LuaQueueMeta); end
_LuaQueueMeta = { __index = { Enque = function(self,x) table.insert(self._data,x); end; Deque = function (self) return table.remove(self._data,1); end; Count = function(self) return #self._data; end; }; __tostring = function(self) local str = "-----\n"; for i,v in ipairs(self._data) do str = str .. i .. " " ..tostring(v) .. "\n"; end return str .. "-----"; end; }
|