lua中的queue

前些天需要一個queue,網(wǎng)絡上找了一下,沒有合適自己的,所以就自己寫一個。

網(wǎng)絡上挺多代碼都是關于deque的,但我的需求就是一個最簡單的queue。

--[[
功能:隊列,先進先出
--]]

queue = class("queue")

function queue.create()
    local que = queue.new()
    que.list = {}
    return que
end

--從后面追加
function queue:push(node)
    if not self.list then assert(false) return end
    assert(node)

    self.list[#self.list+1] = node
end

--彈出 第一個元素
function queue:pop()
    if not self.list then assert(false) return end

    local tmp_list = {}
    for _,v in pairs(self.list) do
        tmp_list[#tmp_list+1] = v
    end
    self.list = {}

    local index = 0
    for _,v in pairs(tmp_list) do
        if index>0 then
            self.list[#self.list+1] = v
        end
        index=index+1
    end
end

--訪問 最后一個元素
function queue:back()
    if not self.list then assert(false) return nil end
    if self:empty() then return nil end

    return self.list[#self.list]
end

--訪問 第一個元素
function queue:front()
    if not self.list then assert(false) return nil end
    if self:empty() then return nil end

    return self.list[1]
end

function queue:size()
    if not self.list then assert(false) return end

    return #self.list
end

--置空
function queue:make_empty()
    self.list = {}
end

function queue:empty()
    if not self.list then assert(false) return end

    if self:size()==0 then return true end
    return false
end

function queue:print()
    if not self.list then assert(false) return end

    local size = string.format("size:%d", self:size())
    for k,v in pairs(self.list) do
        print(size,k,v)    
    end
end


-------------------------------------------------
--測試
local function test()
    local q_obj = queue.create()
    
    for i=1,3 do
        q_obj:push(i)
    end
    q_obj:print()
      
    local back = q_obj:back()     
    
    q_obj:pop()
    q_obj:print()

    q_obj:pop()
    q_obj:print()

    q_obj:pop()
    q_obj:print() 
end
test()


-------------------------------------------------
--                  the end
-------------------------------------------------
學海無涯,錯誤難免,如有發(fā)現(xiàn),盡請指正。

--the end

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容