Guest User

Untitled

a guest
Sep 22nd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. class LinkedListNode
  2. attr_accessor :value, :next_node
  3.  
  4. def initialize(value, next_node=nil)
  5. @value = value
  6. @next_node = next_node
  7. end
  8. end
  9.  
  10. ###### NON-RECURSIVE FUNCTION ######
  11. # 12 -> 37 -> 99 -> nil , original list.
  12. # def reverse_list(list, previous=nil)
  13. # while list != nil
  14. # # make list(12) point to nil
  15. # # make what list is pointing to, point to itself
  16. # tmp = list.next_node # nil
  17. # list.next_node = previous # 37 -> 99
  18.  
  19. # previous = list # 37
  20. # list = tmp # nil
  21. # end
  22. # previous
  23. # end
  24.  
  25. def reverse_list(list, previous=nil)
  26.  
  27. if list
  28. og_next_node = list.next_node
  29. list.next_node = previous
  30. reverse_list(og_next_node, list)
  31. end
  32.  
  33. end
  34.  
  35. def print_values(list_node)
  36. if list_node
  37. print "#{list_node.value} --> "
  38. print_values(list_node.next_node)
  39. else
  40. print "nil\n"
  41. return
  42. end
  43. end
  44.  
  45. node1 = LinkedListNode.new(5)
  46. node2 = LinkedListNode.new(4, node1)
  47. node3 = LinkedListNode.new(3, node2)
  48. node4 = LinkedListNode.new(2, node3)
  49. node5 = LinkedListNode.new(1, node4) # head
  50.  
  51. print_values(node5)
  52.  
  53. reverse_list(node5)
  54. print_values(node1)
Add Comment
Please, Sign In to add comment