如何在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
廣告