lua实现简单的栈和队列

用Lua实现的简单的Stack和Queue。

Stack

用Lua实现的Stack结构,支持PushPopPeekCount四个方法,并且可以通过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结构,支持EnqueDequeCount三个方法,并且可以通过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;
}