lua定长循环队列2

本文介绍了Lua中如何创建一个循环队列,通过`queue.new()`初始化,使用`isFull()`检查队列是否已满,`PushQueue()`进行入队操作,`isEnemty()`判断队列是否为空,`PopQueue()`进行出队操作。示例展示了队列的插入、删除和打印元素的过程。

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


--[[
-- 循环队列与顺序队列区别,删除后的空间依旧可以利用
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()
--]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值