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..0f9adb2 100644 --- a/lib/linked_list.rb +++ b/lib/linked_list.rb @@ -10,36 +10,59 @@ def initialize # Time complexity - ? # Space complexity - ? def add_first(data) - + @head = Node.new(data, @head) end # Time complexity - ? # Space complexity - ? def get_first - + return @head.nil? ? nil : @head.data end # Time complexity - ? # Space complexity - ? def length - return 0 + length = 0 + curr = @head + until curr.nil? + curr = curr.next + length += 1 + end + return length end # Time complexity - ? # Space complexity - ? def add_last(data) - + curr = @head + if curr.nil? + @head = Node.new(data, nil) + return + end + until curr.next == nil + curr = curr.next + end + curr.next = Node.new(data, nil) end # Time complexity - ? # Space complexity - ? def get_last - + return if @head.nil? + curr = @head + until curr.next.nil? + curr = curr.next + end + return curr.data end # Time complexity - ? # Space complexity - ? def get_at_index(index) - + curr = @head + index.times do + curr.nil? ? return : curr = curr.next + end + return curr.data 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