How to Implement a Queue in Lua Programming?

LuaServer Side ProgrammingProgramming

There are different approaches one can take to declare a queue in Lua; the most basic one is to make use of the tables and repeat function, and take two variables that will help us to insert and delete elements from the queue.

Example

Consider the code shown below −

 Live Demo

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)

Output

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
raja
Published on 19-Jul-2021 12:31:22
Advertisements