diff --git a/Ruby/Reverse.rb b/Ruby/Reverse.rb new file mode 100644 index 0000000..f094215 --- /dev/null +++ b/Ruby/Reverse.rb @@ -0,0 +1,36 @@ +class LinkedListNode + attr_accessor :value, :next_node + + def initialize(value, next_node=nil) + @value = value + @next_node = next_node + end +end + +def reverse_list(list, previous=nil) + if list + next_node = list.next_node + list.next_node = previous + reverse_list(next_node, list) + end +end + +def print_values(list_node) + if list_node + print "#{list_node.value} --> " + print_values(list_node.next_node) + else + print "nil\n" + return + end +end + +node1 = LinkedListNode.new(37) +node2 = LinkedListNode.new(99, node1) +node3 = LinkedListNode.new(12, node2) +node4 = LinkedListNode.new(54, node3) + +print_values(node4) +puts "---------" +reverse_list(node4) +print_values(node1)