lua定长循环队列

来源:互联网 发布:电路模拟软件 编辑:程序博客网 时间:2024/06/05 02:53

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())--]]



原创粉丝点击