From ddab413cd27bc24e77893fa49ed9989932ac020e Mon Sep 17 00:00:00 2001 From: Leah Scott-Zechlin Date: Mon, 28 Dec 2020 16:56:30 -0800 Subject: [PATCH] all methods complete --- Gemfile.lock | 36 ++++++++++++++++++++++ lib/linked_list.rb | 75 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 96 insertions(+), 15 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 9e97557..fe8d73e 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -7,39 +7,84 @@ 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 + +end \ No newline at end of file