How to Implement a Queue in Lua Programming?


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

Updated on: 19-Jul-2021

797 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements