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()
--]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章