如何在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+次瀏覽

開啟你的職業生涯

完成課程以獲得認證

開始學習
廣告