lua定长循环队列2


--[[
-- 循环队列与顺序队列区别,删除后的空间依旧可以利用
queue={}
queuesize=3
function queue.new()
 return {front=0,rear=0}
end
function isFull(Q)
 if Q.front==(Q.rear+1)%queuesize then--   表满
  return true
 else
  return false
 end
end
function PushQueue(Q,val)
 if isFull(Q) then return print("Full")
 else
  Q[Q.rear]=val                --赋值队尾
  Q.rear=(Q.rear+1)%queuesize  --入队,尾部后移
  --return Q[Q.rear]
 end
end
function isEnemty(Q)
 if Q.front==Q.rear then--队首与队尾相同,表为空
  return true
 else
  return false
 end
end
function PopQueue(Q)
 if isEnemty(Q) then return print("Nil")
 else
  Q.front=(Q.front+1)%queuesize
  return Q[Q.front]
 end
end
function PrintQueueElement()
 local m="k"
 local n="QueueValue"
 for k,v in pairs(myqueue) do
  m=m .. "  " .. k
  n=n .. "  " .. v
 end
 --print(m)
 print(n)
end
myqueue=queue.new()
PushQueue(myqueue,20)
PushQueue(myqueue,30)
PrintQueueElement()
PopQueue(myqueue)
PopQueue(myqueue)
PrintQueueElement()
PushQueue(myqueue,41)
PushQueue(myqueue,42)
PrintQueueElement()
--]]

你可能感兴趣的:(lua)