Skip to content
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
28 changes: 24 additions & 4 deletions array-list.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,47 @@

class ArrayList
def initialize
@storage = []
@storage = [nil,nil,nil,nil,nil,nil,nil,nil,nil,nil]
@size = 0
end

def add(value)
@storage[@size] = value
@size += 1
end

def delete(value)
def delete #last value
@size -= 1
end

def display
@size.times do |index|
puts @storage[index]
end
end

def include?(key)
def include?(value)
@size.times do |index|
if @storage[index] == value
return true
end
end
return false
end

def size
return @size
end

def max
max = 0
@size.times do |index|
if @storage[index] > @storage[max]
max = index
end
end
return @storage[max]
end

end

# Initializing an Array List
Expand Down
36 changes: 32 additions & 4 deletions linked-list.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
class Node
attr_accessor :value, :next_node

def initialize(val,next_in_line=null)
def initialize(val,next_in_line=nil)
@value = val
@next_nodex = next_in_line
@next_node = next_in_line
puts "Initialized a Node with value: " + value.to_s
end
end
Expand Down Expand Up @@ -62,13 +62,35 @@ def display
puts full_list.join("->")
end

def include?(key)
def include?(value)
current = @head
while !(current.next_node == nil)

Choose a reason for hiding this comment

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

I find this strange notation to say

!(something == nil)

rather than saying

(something != nil)

return true if current.value == value
current = current.next_node
end
return true if current.value == value
return false
end

def size
current = @head
size = 0
while !(current.next_node == nil)
size += 1
current = current.next_node
end
size += 1
end

def max
current = @head
max = current.value
while !(current.next_node == nil)
max = current.value if current.value > max
current = current.next_node
end
max = current.value if current.value > max
max
end

Choose a reason for hiding this comment

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

This looks great and works, but in all of these (include?, size, and max) you had to account for that last node separately -- if you change your loop to while current != nil instead of while current.next_node != nil then you wouldn't need that! I told you to model after display which does it the latter way -- because sometimes you need to do something different with the last case and I wanted that to be the pattern I showed -- but now I want to point out how we could have optimized the pattern just slightly. Hopefully that makes sense!

Copy link
Author

Choose a reason for hiding this comment

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

Mostly understand, but honestly can't completely remember this from two weeks ago. I'll review it again tonight. Thanks!


end
Expand All @@ -87,7 +109,11 @@ def max
puts "Delete 10 and then display the linked list:"
ll.delete(10)
ll.display

puts ll.size
puts ll.include?(5)
puts ll.include?(10)
puts ll.include?(20)
puts ll.max
=begin

Choose a reason for hiding this comment

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

yay for adding more tests!

Output:
Initialized a Node with value: 5
Expand All @@ -98,3 +124,5 @@ def max
Delete 10 and then display the linked list:
5->20
=end

# Homework: write include/size/and max