从网上看到,很多关于lua队列的,但是都没有具体的使用方式,有空将自己做的贴出来,希望大家能指点一二。
栈和队列概念理解:
**相同点:**从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。
**不同点:**栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。 队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。
**栈:**必须按==“后进先出”==的规则进行操作:举个例子比较容易理解,老师批改试卷,(不考虑打乱顺序),老师批改的试卷,就会从最后交试卷的那个同学开始批改,试卷看作是一个栈中的元素,那么最后一个同学交的试卷就是栈顶元素,而第一个同学交的,也就是最低端的作业本,就是栈底元素,这就是对栈的读取规则。
**队列:**按照==“先进先出”==的规则进行操作:举个例子,排队取钱,(就别说插队这种可能啦~~遵守道德规范人人有责~),排在前面的人一定会先取到钱,然后最先离开银行,一个接一个顺序执行,这些等候服务的人看作是队的元素,第一个人就是对头元素,相应的,最后一个人就是队尾元素。这是队的读取规则。
以下是lua队列的数据结构:
LuaQueue = class("LuaQueue")
LuaQueue.CAPACITY_INFINITE = 0
LuaQueue._dataList = nil
LuaQueue._dataCapacity = nil
function LuaQueue:ctor(capacity)
self._dataCapacity = capacity or LuaQueue.CAPACITY_INFINITE
self._dataList = {}
end
--将数据存入表里
function LuaQueue:push(data)
if self:isFull() then
self:pop()
end
self._dataList[#self._dataList+1] = data
end
--取出数据
function LuaQueue:pop()
if self:isE