From d14f0aae76738b61e8e1bfca248cce0bc8fdae5b Mon Sep 17 00:00:00 2001 From: grilledham Date: Thu, 25 Jan 2018 23:31:09 +0000 Subject: [PATCH] added Queue.lua --- utils/Queue.lua | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 utils/Queue.lua diff --git a/utils/Queue.lua b/utils/Queue.lua new file mode 100644 index 00000000..ac6aa338 --- /dev/null +++ b/utils/Queue.lua @@ -0,0 +1,33 @@ +local Queue = {} + +function Queue.new() + local queue = {_head = 0, _tail = 0} + return queue +end + +function Queue.size(queue) + return queue._tail - queue._head +end + +function Queue.push(queue, element) + local index = queue._head + queue[index] = element + queue._head = index - 1 +end + +function Queue.peek(queue) + return queue[queue._tail] +end + +function Queue.pop(queue) + local index = queue._tail + + local element = queue[index] + queue[index] = nil + + queue._tail = index - 1 + + return element +end + +return Queue \ No newline at end of file