lua定长循环队列

本文介绍了在Lua中如何实现一个循环定长队列,包括队列的创建、判断队列是否已满、入队、出队以及打印队列元素等功能。通过示例代码展示了三种不同的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值