lua 实现队列

这篇博客介绍了如何在Lua中实现一个循环队列。通过定义一系列方法如初始化、删除、清空、判断队列是否为空、获取队列长度、入队、出队以及遍历队列,展示了完整的队列操作过程。示例代码中创建了一个容量为4的队列,并进行了元素的插入和删除操作。

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

List = List or {}
function List:InitSequece(length)
    self.m_QueCapacity = length
    self.length = 0
    self.m_head = 0
    self.m_iTail = 0
    self.list = {}
end
function List:DeleteSequece()
   self.list = {}
   self.list = nil
   self.length = 0
   self.m_head = 0
   self.m_iTail = 0
end
function List:ClearSequece()
   self.length = 0
   self.m_head = 0
   self.m_iTail = 0
end
function List:QueueEmpty()
    if 0 == self.length then
        return true
    end
    return false
end
function List:QueueLength()
    return self.length
end
function List:QueueNull()
    if self.length == self.m_QueCapacity then
        return true
    end
    return false
end
function List:EnQueue(number)
    if self:QueueNull() then
        return false
    end
    self.list[self.m_iTail % self.m_QueCapacity] = number
    self.m_iTail = self.m_iTail + 1
    self.length = self.length + 1
    return true
end
function List:DeQueue(number)
    if self:QueueEmpty() then
        return false
    end
    number = self.list[self.m_head]
    self.m_head = self.m_head + 1
    self.m_head = self.m_head % self.m_QueCapacity
    self.length = self.length - 1
    return true and number
end
function List:QuueTraverse()
    for i = self.m_head , self.length + self.m_head - 1 do
        print("打印队列中的元素",self.list[i%self.m_QueCapacity])
    end
end
function List:main()
   
    self:InitSequece(4)
    self:EnQueue(1)
    self:EnQueue(2)
    self:EnQueue(3)
    self:EnQueue(4)
    local number = nil
    print(self:DeQueue(number) , "kkkkkkkkkkkkk")
    print(self:DeQueue(number) , "kkkkkkkkkkkkk")
    print(self:DeQueue(number) , "kkkkkkkkkkkkk")
    print(self:DeQueue(number) , "kkkkkkkkkkkkk")
    if self:QueueEmpty() then
        print("当前队列已经空了")
    else
        print("2222222222222222222")
    end
end
List:main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值