1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- ---
- --- Generated by EmmyLua(https://github.com/EmmyLua)
- --- Created by xxn.
- --- DateTime: 2021/2/1 16:09
- ---
- ---@class Queue
- Queue = {}
- Queue.__index = Queue
- function Queue:New()
- local o = { first = 0, last = -1, dataTb = {} }
- setmetatable(o, self)
- return o
- end
- function Queue:PushFirst(value)
- self.first = self.first - 1
- self.dataTb[self.first] = value
- end
- function Queue:PushLast(value)
- self.last = self.last + 1
- self.dataTb[self.last] = value
- end
- function Queue:PopFirst()
- if self.first > self.last then
- ---logPurple("queue is empty")
- return
- end
- local value = self.dataTb[self.first]
- self.dataTb[self.first] = nil
- self.first = self.first + 1
- return value
- end
- function Queue:PopLast()
- if self.first > self.last then
- ---logPurple("queue is empty")
- return
- end
- local value = self.dataTb[self.last]
- self.dataTb[self.last] = nil
- self.last = self.last - 1
- return value
- end
- function Queue:IsEmpty()
- return self.first > self.last
- end
- function Queue:Count()
- if self.first > self.last then
- return 0
- end
- return Mathf.Abs((Mathf.Abs(self.last) - Mathf.Abs(self.first))) + 1
- end
- function Queue:LastValue()
- if self.first > self.last then
- ---logPurple("queue is empty")
- return
- end
- local value = self.dataTb[self.last]
- return value
- end
- function Queue:GetValueByIndex(index)
- if self.first > self.last then
- ---logPurple("queue is empty")
- return
- end
- index = index - 1 + self.first
- local value = self.dataTb[index]
- return value
- end
- function Queue:Clear()
- self.first = 0
- self.last = -1
- self.dataTb = {}
- end
|