Lua 实现Queue LuaQueue Lua队列 Xlua队列

这是一个用 Lua 实现的简单的队列类,符合C#命名习惯。在这个队列类中,我们内部使用了一个 list 表来存储数据,
并且在每次 Enqueue 和 Dequeue 的时候都会更新队列长度 Count 的值。

这个队列类可以通过 Enqueue 将数据添加到队列中,通过 Dequeue 从队列中移除并返回队列的第一个元素,
也可以使用 Peek 方法返回队列的第一个元素而不移除它。队列中的元素遵循先进先出的原则。

该队列类可以用于实现一些简单的数据结构,例如事件队列、消息队列等等。

该类支持 Enqueue 和 Dequeue 操作,用于将元素加入队列尾部和从队列头部取出元素;支持 Peek
操作,用于查看队列头部的元素,但不从队列中删除;支持 Clear 操作,用于清空队列;支持 Count 和 isEmpty
操作,用于获取队列中元素的数量以及判断队列是否为空。

---@class Queue 队列类
---@field private list table 队列内部使用的list
---@field public Count number 队列长度

Queue = class("Queue")

---@param self Queue
function Queue:ctor()
    self.list = {}
    self.Count = 0
end

---@param self Queue
---@param item any
function Queue:Enqueue(item)
    table.insert(self.list, item)
    self.Count = self.Count + 1
end

---@param self Queue
---@return any
function Queue:Dequeue()
    if self.Count == 0 then
        return nil
    end
    local item = self.list[1]
    table.remove(self.list, 1)
    self.Count = self.Count - 1
    return item
end

---@param self Queue
---@return any
function Queue:Peek()
    if self.Count == 0 then
        return nil
    end
    return self.list[1]
end

该类支持 Enqueue 和 Dequeue 操作,用于将元素加入队列尾部和从队列头部取出元素;支持 Peek 操作,用于查看队列头部的元素,但不从队列中删除;支持 Clear 操作,用于清空队列;支持 Count 和 isEmpty 操作,用于获取队列中元素的数量以及判断队列是否为空。
使用反范例:

local q = Queue.new()
q:Enqueue("apple")
q:Enqueue("banana")
q:Enqueue("cherry")

while q.Count > 0 do
    local item = q:Dequeue()
    print(item)
end

输出结果为

apple
banana
cherry

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值