29 lines
460 B
Ruby
29 lines
460 B
Ruby
class ListNode
|
|
attr_accessor :value, :succ
|
|
|
|
def initialize(value, succ=nil)
|
|
self.value = value
|
|
self.succ = succ
|
|
end
|
|
|
|
def each(&b)
|
|
yield self
|
|
succ.each(&b) if succ
|
|
end
|
|
|
|
include Enumerable
|
|
|
|
def self.from_array(ary)
|
|
head = self.new(ary[0], nil)
|
|
prev = head
|
|
ary[1..-1].each do |val|
|
|
node = self.new(val, nil)
|
|
prev.succ = node
|
|
prev = node
|
|
end
|
|
head
|
|
end
|
|
end
|
|
|
|
list = ListNode.from_array([1,2,3,4])
|