Queue = {} function Queue.new(capacity) local self = {} setmetatable(self,{__index = Queue}) self.capacity = capacity self.queue = {} self.size_ = 0 self.head = -1 self.rear = -1 return self end function Queue:Enqueue(element) if self.size_ == 0 then self.head = 0 self.rear = 1 self.size_ = 1 self.queue[self.rear] = element else local temp = (self.rear + 1) % self.capacity --print("1111111111111111111====>>>>") --print(temp) if temp == self.head then error("Error: capacity is full.") ViewUtil.ErrorTip(10001,"Error: capacity is full.") return else self.rear = temp end self.queue[self.rear] = element self.size_ = self.size_ + 1 end end function Queue:Dequeue() if self:IsEmpty() then ViewUtil.ErrorTip(10002,"Error: The Queue is empty.") error("Error: The Queue is empty.") return end self.size_ = self.size_ - 1 self.head = (self.head + 1) % self.capacity local value = self.queue[self.head] return value end function Queue:Clear() self.queue = nil self.queue = {} self.size_ = 0 self.head = -1 self.rear = -1 end function Queue:IsEmpty() if self.size_ == 0 then return true end return false end function Queue:Count() return self.size_ end function Queue:dump() local h = self.head local r = self.rear local str = nil local first_flag = true while h ~= r do if first_flag == true then str = "{"..self.queue[h] h = (h + 1) % self.capacity first_flag = false else str = str..","..self.queue[h] h = (h + 1) % self.capacity end end str = str..","..self.queue[r].."}" if(debug_print) then print(str) end end