如何在Lua编程中实现队列?


Lua 中有不同的方法可以声明队列;最基本的方法是使用表和 repeat 函数,并使用两个变量来帮助我们在队列中插入和删除元素。

示例

考虑以下代码——

 在线演示

queue = {}
queue.first = 0
queue.last = -1
queue.data = {}
function insert(q, val)
   q.last = q.last + 1
   q.data[q.last] = val
end
function remove(q)
   if (q.first > q.last) then
      rval = -1
   else
      print("remove: q.data[q.first]= ", q.data[q.first], " q.first= ", q.first)
      local rval = q.data[q.first]
      print("remove: rval= ", rval)
      q.data[q.first] = nil
      q.first = q.first + 1
      print("remove: q.first= ", q.first)
   end
   return rval
end
insert(queue,"a")
insert(queue,"b")
insert(queue,"c")
for i,v in ipairs(queue.data) do
   print(i, v)
end
repeat
   local x = remove(queue)
   print("list item= ", x)
until (queue.first > queue.last)

输出

1   b
2   c
remove: q.data[q.first]= a q.first= 0
remove: rval= a
remove: q.first= 1
list item= nil
remove: q.data[q.first]= b q.first= 1
remove: rval= b
remove: q.first= 2
list item= nil
remove: q.data[q.first]= c q.first= 2
remove: rval= c
remove: q.first= 3
list item= nil

更新于: 2021-07-19

1K+次浏览

开启你的职业生涯

完成课程以获得认证

开始学习
广告