1
--[[
-- 循环队列与顺序队列区别,删除后的空间依旧可以利用
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.rear=(Q.rear+1)%queuesize --入队,尾部后移
Q[Q.rear]=val --赋值队尾
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)
PushQueue(myqueue,4)
PrintQueueElement()
--]]
2
--[[count,front,tail=0,0,0
local Size=4--定长
queue={}--循环队列
function isEnemty()
return count==0
end
function isFull()
return count==Size
end
function push(val)
if isFull() then return print("Queue is Full") end
tail=tail+1
queue[tail]=val
count=count+1
return queue[#queue]
end
function pop()
if isEnemty() then return print("Queue is Enempty") end
front=(front+1)%Size
count=count-1
return queue[front]
end
function test ()
for i=1,5 do
print(push(i))
end
for i=1,5 do
print(pop())
end
end
test()--]]
---------------------------------------------------------MEthod3(insert,与Remove大数据量时效率低)
--[[ Quene={}
local Length=4
function PushQueue(value)
if #Quene<Length then
table.insert(Quene,1,value)
else
return nil
end
end
function PopQueue()
local val=nil
if #Quene>=1 then
val=Quene[#Quene]
table.remove(Quene,#Quene)
else
return nil
end
return val
end
PushQueue(1)
PushQueue(2)
PushQueue(3)
PushQueue(4)
PushQueue(5)
print(PopQueue())
print(PopQueue())
print(PopQueue())
print(PopQueue())
print(PopQueue())
print(PopQueue())--]]