From b3e63ed13762e5f9fad8482d0a770fabe8d87dc6 Mon Sep 17 00:00:00 2001 From: Mackenzie Date: Mon, 12 Apr 2021 17:44:36 -0700 Subject: [PATCH 1/2] wave 1: stack tests pass --- lib/stack.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/stack.rb b/lib/stack.rb index cfc6ef0f..baaa1e45 100644 --- a/lib/stack.rb +++ b/lib/stack.rb @@ -1,19 +1,23 @@ class Stack def initialize # @store = ... - raise NotImplementedError, "Not yet implemented" + @store = LinkedList.new end def push(element) - raise NotImplementedError, "Not yet implemented" + @store.add_first(element) end def pop - raise NotImplementedError, "Not yet implemented" + return nil if self.empty? + + item = @store.remove_first + + return item end def empty? - raise NotImplementedError, "Not yet implemented" + return @store.empty? end def to_s From 37171420d6bde5b08fd46c455d6898c68b70c0aa Mon Sep 17 00:00:00 2001 From: Mackenzie Date: Tue, 13 Apr 2021 12:41:06 -0700 Subject: [PATCH 2/2] queue methods pass --- lib/queue.rb | 57 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/lib/queue.rb b/lib/queue.rb index 828217c6..00abe19b 100644 --- a/lib/queue.rb +++ b/lib/queue.rb @@ -1,31 +1,74 @@ class Queue +MAX_SIZE = 20 + def initialize # @store = ... - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + + @store = Array.new(MAX_SIZE) + @front = -1 + @back = -1 end def enqueue(element) - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + + if (@front == 0 && @back == MAX_SIZE - 1) || (@back == (@front - 1) % MAX_SIZE - 1) + raise ArgumentError.new, "Queue is full" + elsif @front == -1 && @back == -1 + @front = 0 + @back = 0 + elsif @back == MAX_SIZE + @back = 0 + else + @back += 1 + end + + @store[@back] = element + end def dequeue - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + + if @store.empty? + raise ArgumentError.new, "Queue is empty" + end + + data = @store[@front] + @store[@front] = nil + + + if (@front == @back) + @front == -1 + @back == -1 + elsif (@front == MAX_SIZE - 1) + @front = 0 + else + @front += 1 + end + + return data + end def front - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + return @store[@front] end def size - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + return @store.compact.length end def empty? - raise NotImplementedError, "Not yet implemented" + # raise NotImplementedError, "Not yet implemented" + return @store.compact.length == 0 ? true : false end def to_s - return @store.to_s + return @store.compact.to_s end end