local queue = {}
function queue.new()
return setmetatable({first = 1, last = 0}, {__index = queue})
end
function queue.offer(self, ...)
for i, v in ipairs({...}) do
self.last = self.last + 1
self[self.last] = v
end
end
function queue.poll(self)
if self.first > self.last then
return nil
end
local v = self[self.first]
self[self.first] = nil
self.first = self.first + 1
return v
end
function queue.tail(self)
return self[self.last]
end
function queue.size(self)
return self.last - self.first + 1
end
function queue.clear(self)
while self:poll() do end
self.first = 1
self.last = 0
end
-- 轮训队列,结束后返回空
function queue.iter(self)
local i = self.first
return function()
local v = self[i]
i = i + 1
return v
end
end
function queue.submit(self, i, item)
self[i] = item
end
return queue
lua 代码实现队列 queue
最新推荐文章于 2025-03-27 22:55:53 发布
本文介绍了一种使用Lua语言实现的队列数据结构,包括队列的基本操作如添加元素(offer)、移除元素(poll)、获取队尾元素(tail)、计算队列大小(size)和清空队列(clear)等。此外,还提供了迭代器(iter)和直接设置指定位置元素(submit)的方法。
1118

被折叠的 条评论
为什么被折叠?



