From c73220d9950d5a949c3e62985d0bc054286888d2 Mon Sep 17 00:00:00 2001 From: Schanen Ryan Date: Mon, 14 Dec 2020 19:27:33 -0800 Subject: [PATCH 1/2] Forgot about commits : / --- lib/linked_list.rb | 78 ++++++++++++++++++++++++++++++++-------- test/linked_list_test.rb | 8 ++--- 2 files changed, 67 insertions(+), 19 deletions(-) diff --git a/lib/linked_list.rb b/lib/linked_list.rb index 9e97557..a0bf933 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -7,39 +7,87 @@ def initialize @head = nil end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(1) + # Space complexity - O(1) (or is it 0(n) because 'data' could be of varying sizes?) def add_first(data) - + new_node = Node.new(data) + new_node.next = @head + @head = new_node + return @head.data end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(1) + # Space complexity - O(1) def get_first + if @head + return @head.data + end + return nil end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def length - return 0 + count = 0 + current = @head + while current != nil + count += 1 + current = current.next + end + + return count end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) (or is it 0(n) because 'data' could be of varying sizes?) def add_last(data) + if find_last + last = self.find_last + last.next = Node.new(data) + else + @head = Node.new(data) + end end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def get_last - + if find_last + return find_last.data + end + return nil end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def get_at_index(index) + if @head + index_counter = 0 + current = @head + + until index_counter == index + index_counter += 1 + current = current.next + end + + return current.data + end + return nil + end + # Time complexity - O(n) + # Space complexity - O(1) + def find_last + if @head + current = @head + + while current.next != nil + current = current.next + end + return current + end + return nil end end diff --git a/test/linked_list_test.rb b/test/linked_list_test.rb index bdbbd06..8e558e7 100644 --- a/test/linked_list_test.rb +++ b/test/linked_list_test.rb @@ -21,7 +21,7 @@ end end - xdescribe 'add_first & get_first' do + describe 'add_first & get_first' do it 'can add values to an empty list' do # Act @list.add_first(3) @@ -51,7 +51,7 @@ end end - xdescribe "length" do + describe "length" do it "will return 0 for an empty list" do expect(@list.length).must_equal 0 end @@ -66,7 +66,7 @@ end end - xdescribe "addLast & getLast" do + describe "addLast & getLast" do it "will add to the front if the list is empty" do @list.add_last(1) expect(@list.get_first).must_equal 1 @@ -93,7 +93,7 @@ end end - xdescribe 'get_at_index' do + describe 'get_at_index' do it 'returns nil if the index is outside the bounds of the list' do expect(@list.get_at_index(3)).must_be_nil end From 389cce45e42c3ed294db8a289b8d8afe511861eb Mon Sep 17 00:00:00 2001 From: Schanen Ryan Date: Wed, 16 Dec 2020 13:22:10 -0800 Subject: [PATCH 2/2] Commiting to space complexity --- Gemfile.lock | 36 ++++++++++++++++++++++++++++++++++++ lib/linked_list.rb | 7 ++----- 2 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..630ea95 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,36 @@ +GEM + remote: https://rubygems.org/ + specs: + ansi (1.5.0) + builder (3.2.4) + coderay (1.1.3) + method_source (1.0.0) + minitest (5.14.2) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + minitest-skip (0.0.3) + minitest (~> 5.0) + minitest-spec (0.0.2.1) + minitest (>= 3.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + rake (13.0.1) + ruby-progressbar (1.10.1) + +PLATFORMS + ruby + +DEPENDENCIES + minitest + minitest-reporters + minitest-skip + minitest-spec + pry + rake + +BUNDLED WITH + 2.1.4 diff --git a/lib/linked_list.rb b/lib/linked_list.rb index a0bf933..7560b7a 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -8,7 +8,7 @@ def initialize end # Time complexity - O(1) - # Space complexity - O(1) (or is it 0(n) because 'data' could be of varying sizes?) + # Space complexity - O(1) def add_first(data) new_node = Node.new(data) new_node.next = @head @@ -22,7 +22,6 @@ def get_first if @head return @head.data end - return nil end @@ -35,12 +34,11 @@ def length count += 1 current = current.next end - return count end # Time complexity - O(n) - # Space complexity - O(1) (or is it 0(n) because 'data' could be of varying sizes?) + # Space complexity - O(1) def add_last(data) if find_last last = self.find_last @@ -48,7 +46,6 @@ def add_last(data) else @head = Node.new(data) end - end # Time complexity - O(n)