diff --git a/lib/queue.rb b/lib/queue.rb index 828217c6..77fb3f2c 100644 --- a/lib/queue.rb +++ b/lib/queue.rb @@ -1,16 +1,37 @@ class Queue def initialize - # @store = ... - raise NotImplementedError, "Not yet implemented" + @store = Array.new(10) + @size = 10 + @front = -1 + @front = -1 end def enqueue(element) - raise NotImplementedError, "Not yet implemented" + if @front == -1 + @front = 0 + @back = 1 + @store[@front] = element + elsif @front == @back + raise ArgumentError, "This queue is full" + else + @store[@back] = element + @back = (@back + 1) % @size + end end def dequeue - raise NotImplementedError, "Not yet implemented" + if @front == -1 + raise ArgumentError, "This queue is empty" + else + value = @store[@front] + @front = (@front + 1) % @size + if @front == @back + @front = -1 + @back = -1 + end + return value + end end def front @@ -22,10 +43,16 @@ def size end def empty? - raise NotImplementedError, "Not yet implemented" + return @front == -1 end def to_s - return @store.to_s + list = [] + current = @front + until curent == @back + list << @store[current] + current = (current + 1) % @size + end + return list.to_s end end diff --git a/lib/stack.rb b/lib/stack.rb index cfc6ef0f..10da0932 100644 --- a/lib/stack.rb +++ b/lib/stack.rb @@ -1,19 +1,21 @@ class Stack def initialize - # @store = ... - raise NotImplementedError, "Not yet implemented" + @store = LinkedList.new end def push(element) - raise NotImplementedError, "Not yet implemented" + @store.add_last(element) end def pop - raise NotImplementedError, "Not yet implemented" + if @store.empty? + raise ArgumentError, "Stack is empty" + end + return @store.remove_last end def empty? - raise NotImplementedError, "Not yet implemented" + return @store.empty? end def to_s