From 3b95a26c0d560ac1f2ec39ef33404d5c3bdda116 Mon Sep 17 00:00:00 2001 From: Chris M Date: Thu, 3 Sep 2020 11:50:03 -0700 Subject: [PATCH 1/6] Update stack_test.rb --- test/stack_test.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/stack_test.rb b/test/stack_test.rb index 1df0b077..e655a46c 100644 --- a/test/stack_test.rb +++ b/test/stack_test.rb @@ -9,7 +9,7 @@ it "pushes something onto a empty Stack" do s = Stack.new s.push(10) - s.to_s.must_equal "[10]" + expect(s.pop).must_equal 10 end it "pushes multiple somethings onto a Stack" do @@ -17,7 +17,9 @@ s.push(10) s.push(20) s.push(30) - s.to_s.must_equal "[10, 20, 30]" + expect(s.pop).must_equal 30 + expect(s.pop).must_equal 20 + expect(s.pop).must_equal 10 end it "starts the stack empty" do @@ -39,7 +41,6 @@ s.push(3) s.push(7) removed = s.pop - removed.must_equal 7 - s.to_s.must_equal "[5, 3]" + expect(removed).must_equal 7 end -end \ No newline at end of file +end From ce850bd1a100740efca09e58e6cb320eb1d0f9b1 Mon Sep 17 00:00:00 2001 From: Chris M Date: Thu, 3 Sep 2020 11:50:57 -0700 Subject: [PATCH 2/6] Update stack_test.rb --- test/stack_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stack_test.rb b/test/stack_test.rb index e655a46c..cb15a12c 100644 --- a/test/stack_test.rb +++ b/test/stack_test.rb @@ -3,7 +3,7 @@ describe "Test Stack Implementation" do it "creates a Stack" do s = Stack.new - s.class.must_equal Stack + expect(s.class).must_equal Stack end it "pushes something onto a empty Stack" do From cd8301b5364ed57b60eec7dbf93fc612424a6129 Mon Sep 17 00:00:00 2001 From: Chris M Date: Thu, 3 Sep 2020 17:06:36 -0700 Subject: [PATCH 3/6] Update linked_list.rb --- lib/linked_list.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/linked_list.rb b/lib/linked_list.rb index 136d8ac9..edd32b4d 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -37,7 +37,7 @@ def remove_first() value = @head.data @head = @head.next - @head.previous = nil + @head.previous = nil unless @head.nil? return value end @@ -339,4 +339,4 @@ def to_s return list.to_s end -end \ No newline at end of file +end From 589faf6857377ba3ba7fe00c18fac095bec41cae Mon Sep 17 00:00:00 2001 From: Chris M Date: Fri, 4 Sep 2020 08:56:26 -0700 Subject: [PATCH 4/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6397703..b245ca2d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ In this exercise we will implement both a stack & a queue, and then use them in a variety of hands-on exercises. -**Due: Monday Sept 7th** +**Due: Tuesday Sept 8th** ## Learning Goals From 9c84defef6c1585474de40979c826b417d293cb1 Mon Sep 17 00:00:00 2001 From: Chris M Date: Tue, 8 Sep 2020 13:39:11 -0700 Subject: [PATCH 5/6] Update stack_test.rb --- test/stack_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/stack_test.rb b/test/stack_test.rb index cb15a12c..1c4572d8 100644 --- a/test/stack_test.rb +++ b/test/stack_test.rb @@ -31,8 +31,8 @@ s = Stack.new s.push(5) removed = s.pop - removed.must_equal 5 - s.empty?.must_equal true + expect(removed).must_equal 5 + expect(s.empty?).must_equal true end it "removes the right something (LIFO)" do From f1cf11c4112e249f7498525c0519a9cb16153432 Mon Sep 17 00:00:00 2001 From: Jessica Chan Date: Fri, 23 Jul 2021 19:40:11 -0700 Subject: [PATCH 6/6] complete queue and stack methods --- lib/queue.rb | 48 ++++++++++++++++++++++++++++++++++++++++-------- lib/stack.rb | 11 ++++++----- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/lib/queue.rb b/lib/queue.rb index 828217c6..d6e12ed6 100644 --- a/lib/queue.rb +++ b/lib/queue.rb @@ -1,31 +1,63 @@ class Queue def initialize - # @store = ... - raise NotImplementedError, "Not yet implemented" + @size = 20 + @store = Array.new + @front = -1 + @rear = -1 end def enqueue(element) - raise NotImplementedError, "Not yet implemented" + if (@front == 0 && @rear == @size - 1) || (@rear == (@front - 1) % (@size-1)) + raise ArgumentError.new('Queue is full') + elsif @front == -1 && @rear == -1 + @front = @rear = 0 + elsif @rear == @size - 1 && @front != 0 + @rear = 0 + else + @rear = @rear + 1 + end + + @store[@rear] = element end def dequeue - raise NotImplementedError, "Not yet implemented" + if @front == -1 + raise ArgumentError.new('Queue is empty') + end + + data = @store[@front] + @store[@front] = nil + + if @front == @rear + @front = @rear = -1 + elsif @front == @size - 1 + @front = 0 + else + @front = @front + 1 + end + + return data end def front - raise NotImplementedError, "Not yet implemented" + return @store[@front] end def size - raise NotImplementedError, "Not yet implemented" + return @back >= @front ? (@back - @front) : (@size - @front + @back) end def empty? - raise NotImplementedError, "Not yet implemented" + return @front == -1 end def to_s - return @store.to_s + queue = [] + @size.times do |i| + index = (i + @front) % @size + queue << @store[index] if @store[index] + end + return queue.to_s end end diff --git a/lib/stack.rb b/lib/stack.rb index cfc6ef0f..10c94de6 100644 --- a/lib/stack.rb +++ b/lib/stack.rb @@ -1,19 +1,20 @@ 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? + + return @store.remove_first() end def empty? - raise NotImplementedError, "Not yet implemented" + return @store.empty? end def to_s