Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LinkedListNode
- attr_accessor :value, :next_node
- def initialize(value, next_node=nil)
- @value = value
- @next_node = next_node
- end
- end
- ###### NON-RECURSIVE FUNCTION ######
- # 12 -> 37 -> 99 -> nil , original list.
- # def reverse_list(list, previous=nil)
- # while list != nil
- # # make list(12) point to nil
- # # make what list is pointing to, point to itself
- # tmp = list.next_node # nil
- # list.next_node = previous # 37 -> 99
- # previous = list # 37
- # list = tmp # nil
- # end
- # previous
- # end
- def reverse_list(list, previous=nil)
- if list
- og_next_node = list.next_node
- list.next_node = previous
- reverse_list(og_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(5)
- node2 = LinkedListNode.new(4, node1)
- node3 = LinkedListNode.new(3, node2)
- node4 = LinkedListNode.new(2, node3)
- node5 = LinkedListNode.new(1, node4) # head
- print_values(node5)
- reverse_list(node5)
- print_values(node1)
Add Comment
Please, Sign In to add comment