# 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