Lua实现队列

Lua没有实现面向对象的,自己修改为原生写法吧。

local Queue = Class('Queue')

function Queue:ctor()
    self.tab = {}
    self.tail = 0
end

function Queue:Enqueue(value)
    if self.tail == 0 then
        self.head = 1
    end
    table.insert(self.tab, value)
    self.tail = self.tail + 1
end

function Queue:Dequeue()
    if self.head > self.tail then
        return nil
    else
        local value = self.tab[self.head]
        self.tab[self.head] = nil
        self.head = self.head + 1
        return value
    end
end

function Queue:Peek()
    if self.head > self.tail then
        return nil
    else
        return self.tab[self.head]
    end
end

function Queue:Count()
    return self.tail - self.head + 1
end

function Queue:Clear()
    table.ClearArray(self.tab)
end

return Queue

你可能感兴趣的:(Lua)