From f615aecb03ea4ce9c3483e9139ecc9e2b15a1ed7 Mon Sep 17 00:00:00 2001 From: Leah Scott-Zechlin Date: Sat, 26 Dec 2020 19:57:16 -0800 Subject: [PATCH 1/2] 6 methods complete --- Gemfile.lock | 36 +++++++++++++++ lib/linked_list.rb | 95 ++++++++++++++++++++++++++++++++++------ lib/notes.rb | 37 ++++++++++++++++ test/linked_list_test.rb | 8 ++-- 4 files changed, 158 insertions(+), 18 deletions(-) create mode 100644 Gemfile.lock create mode 100644 lib/notes.rb 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 9e97557..5be0bb9 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -7,39 +7,106 @@ def initialize @head = nil end - # Time complexity - ? - # Space complexity - ? - def add_first(data) + # Spotify queue + # Time complexity - O(1) + # Space complexity - O(1) + def add_first(data) + a = Node.new(data) + # without next, we lose access to prior nodes. The previous nodes stop existing + a.next = @head # next is instance variable on the node object. we set what used to be the head of the linked list to nowbe the node we just created + @head = a # this a becomes the new head end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(1) + # Space complexity - O(1) def get_first + return nil if @head.nil? + return @head.data end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def length - return 0 + length = 0 + current = @head + until current.nil? + length += 1 + current = current.next + end + + return length end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def add_last(data) + if @head.nil? + @head = Node.new(data) + else + current = @head + + until current.next.nil? + current = current.next + end + last = Node.new(data) + current.next = last + + end end - # Time complexity - ? - # Space complexity - ? + + # Time complexity - O(n) + # Space complexity - O(1) def get_last + return nil if @head.nil? + + current = @head + until current.next.nil? + current = current.next + end + + return current.data end - # Time complexity - ? - # Space complexity - ? + # Time complexity - O(n) + # Space complexity - O(1) def get_at_index(index) + if @head.nil? || index >= length + return nil + else + current = @head + index.times do + current = current.next + end + end + return current.data end + end + + + + +# a = Node.new("a") +# b = Node.new("b") +# b.next = a +# c = Node.new("d") +# c.next = b +# d = Node.new("d") +# d.next = c +# e = Node.new("e") +# e.next = d +# +# head = Node.new("a") +# # The line below will construct a new node and +# # Set it's `next` reference to the old value +# # of `head` +# head = Node.new("b", head) +# head = Node.new("c", head) +# head = Node.new("d", head) +# head = Node.new("e", head) \ No newline at end of file diff --git a/lib/notes.rb b/lib/notes.rb new file mode 100644 index 0000000..f55f67d --- /dev/null +++ b/lib/notes.rb @@ -0,0 +1,37 @@ +# a = Node.new("a") +# b = Node.new("b") +# b.next = a +# c = Node.new("d") +# c.next = b +# d = Node.new("d") +# d.next = c +# e = Node.new("e") +# e.next = d +# +# +require_relative 'node' + + +head = Node.new("a") +# The line below will construct a new node and +# Set it's `next` reference to the old value +# of `head` +head = Node.new("b", head) +head = Node.new("c", head) +head = Node.new("d", head) +head = Node.new("e", head) + + +current = head + +found = false +until current.nil? + if current.data == "f" + puts "Found it!" + found = true + end + + current = current.next +end + +puts "Didn't find it" unless found \ No newline at end of file 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 5566d96922a33e63afe940b68e29f0618e6b5cee Mon Sep 17 00:00:00 2001 From: Leah Scott-Zechlin Date: Sat, 26 Dec 2020 19:57:54 -0800 Subject: [PATCH 2/2] removed notes --- lib/linked_list.rb | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/lib/linked_list.rb b/lib/linked_list.rb index 5be0bb9..f7a8b3a 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -88,25 +88,3 @@ def get_at_index(index) end end - - - - -# a = Node.new("a") -# b = Node.new("b") -# b.next = a -# c = Node.new("d") -# c.next = b -# d = Node.new("d") -# d.next = c -# e = Node.new("e") -# e.next = d -# -# head = Node.new("a") -# # The line below will construct a new node and -# # Set it's `next` reference to the old value -# # of `head` -# head = Node.new("b", head) -# head = Node.new("c", head) -# head = Node.new("d", head) -# head = Node.new("e", head) \ No newline at end of file