local data ={}
DualStack ={}function DualStack:new(o)
o = o or{}
self.__index =self
setmetatable(o,self)
data[o]={}return o
endfunction DualStack:push(v)
table.insert(data[self],v)endfunction DualStack:pop()local v = data[self][#data[self]]
table.remove(data[self],#data[self])return v
endfunction DualStack:top()local v = data[self][#data[self]]return v
endfunction DualStack:isempty()return#data[self]==0endlocal stack = DualStack:new()for i =1,10do
stack:push(i)endprint(stack:top())whilenot stack:isempty()doprint(stack:pop())end