-- 循環隊列與順序隊列區別,刪除後的空間依舊可以利用
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()
--]]