Владимир,
Я вот немного ваши программы переписал в таком виде:
--------------------------------------------
local function _new(q_size)
return { first = 1, last =0, max_size = q_size }
end
local function _delq(q)
local m=q.first
local x = q[m]
q[m] = nil
q.first = m + 1
return x
end
local function _push( q, value )
q.last = q.last + 1
q[q.last] = value
if q.last >q.max_size then return _delq(q) end
end
local function _pop( q)
if q.last>=q.first then return _delq(q); end
end
local function _get(q,pos)
local x=q.first+pos
if q.last>=x then return q[x] end
end
-- если очередь пустая то get(q,0)=nil
Я вот немного ваши программы переписал в таком виде:
--------------------------------------------
local function _new(q_size)
return { first = 1, last =0, max_size = q_size }
end
local function _delq(q)
local m=q.first
local x = q[m]
q[m] = nil
q.first = m + 1
return x
end
local function _push( q, value )
q.last = q.last + 1
q[q.last] = value
if q.last >q.max_size then return _delq(q) end
end
local function _pop( q)
if q.last>=q.first then return _delq(q); end
end
local function _get(q,pos)
local x=q.first+pos
if q.last>=x then return q[x] end
end
-- если очередь пустая то get(q,0)=nil