Skip to content

Instantly share code, notes, and snippets.

@aarti
Created September 8, 2014 01:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aarti/9febc66440da1300305e to your computer and use it in GitHub Desktop.
Save aarti/9febc66440da1300305e to your computer and use it in GitHub Desktop.
Simple Linked List
class Element
attr_accessor :datum, :next
def initialize(datum,next_element)
@datum = datum
@next = next_element
end
def reverse
reversed = nil
original = self
next_element = nil
while (original)
reversed = Element.new(original.datum, next_element)
next_element = reversed
original = original.next
end
reversed
end
def to_a
Element.to_a(self)
end
def from_a
Element.from_a(self)
end
def self.to_a(list)
ret_arr = []
the_list = list
while (the_list)
ret_arr << the_list.datum
the_list = the_list.next
end
ret_arr
end
def self.from_a(arr)
list = nil
prev_element = nil
arr.each do |e|
new_element = Element.new(e, nil)
if prev_element
prev_element.next = new_element
else
list = new_element
end
prev_element = new_element
end
list
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment