Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Branches - Farah #33

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 49 additions & 15 deletions lib/linked_list.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require_relative 'node'
require 'pry'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove pry on submission


class LinkedList
attr_reader :head
Expand All @@ -7,39 +8,72 @@ def initialize
@head = nil
end

# Time complexity - ?
# Space complexity - ?
# Time complexity - O(1) where 1 is the one node created
# Space complexity - O(1) where 1 is the one node created in space
Comment on lines +11 to +12

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually it's O(1) because the amount of time and memory doesn't change no matter how big the list is.

def add_first(data)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


@head = Node.new(data, head)
end

# Time complexity - ?
# Space complexity - ?
# Time complexity - O(1) because it is grabbing the first node in the list
# Space complexity - O(1) because it is returning one node
def get_first

return nil if head.nil?
return @head.data
end

# Time complexity - ?
# Space complexity - ?
# Time complexity - O(n) where n is the length of the linked list
# Space complexity - O(1) because only a single number is being returning, the length of the list
def length

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

return 0
count = 0
current = @head
until current.nil?
count += 1
current = current.next
end
return count
end

# Time complexity - ?
# Space complexity - ?
# Time complexity - O(n) where n is the length of the entire list
# Space complexity - O(1) because you are adding one node
def add_last(data)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

current = @head

if current.nil?
add_first(data)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good re-use of a method

return
end

until current.next == nil
current = current.next
end
current.next = Node.new(data)
end

# Time complexity - ?
# Space complexity - ?
# Time complexity - O(n) where n is the length of the entire list
# Space complexity - O(1) because you are returning informatio on one node
def get_last
current = @head

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if head is nil?

Suggested change
current = @head
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) where n is the length of the list, in worst case scenario
# Space complexity - O(1) because only single node data is returned
def get_at_index(index)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if the index is greater than the length of the list?

current = @head
if current.nil?
return nil
end

i = 0
while i != index
i += 1
current = current. next
end

return current.data
end
end
8 changes: 4 additions & 4 deletions test/linked_list_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -91,7 +91,7 @@

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
Expand Down