RosettaCodeData/Task/Doubly-linked-list-Element-insertion/Ruby/doubly-linked-list-element-insertion.rb
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

19 lines
528 B
Ruby

class DListNode
def insert_after(search_value, new_value)
if search_value == value
new_node = self.class.new(new_value, nil, nil)
next_node = self.succ
self.succ = new_node
new_node.prev = self
new_node.succ = next_node
next_node.prev = new_node
elsif self.succ.nil?
raise StandardError, "value #{search_value} not found in list"
else
self.succ.insert_after(search_value, new_value)
end
end
end
head = DListNode.from_array([:a, :b])
head.insert_after(:a, :c)