Guest User

Untitled

a guest
Nov 21st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 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. class Stack
  11. attr_reader :data
  12.  
  13. def initialize
  14. @data = nil
  15. end
  16.  
  17. # Push a value onto the stack
  18. def push(value)
  19. @data = LinkedListNode.new(value, @data)
  20. end
  21.  
  22. def pop
  23. raise 'Stack is empty?' if empty?
  24. @data = @data.next_node
  25. end
  26.  
  27. def value
  28. @data.value unless empty?
  29. end
  30.  
  31. def next_node
  32. @data.next_node unless empty?
  33. end
  34.  
  35. def empty?
  36. @data.nil?
  37. end
  38. end
  39.  
  40. def reverse_list(list)
  41. reverse_stack = Stack.new
  42.  
  43. while list
  44. reverse_stack.push(list.value)
  45. list = list.next_node
  46. end
  47. reverse_stack
  48. end
  49.  
  50. def print_values(list_node)
  51. if list_node
  52. print "#{list_node.value} --> "
  53. print_values(list_node.next_node)
  54. else
  55. print "nil\n"
  56. end
  57. end
  58.  
  59. stack = Stack.new
  60. stack.push(34)
  61. stack.push(99)
  62. stack.push(64)
  63. stack.push(76)
  64.  
  65. revlist = reverse_list(stack)
  66.  
  67. print_values(stack)
  68. print_values(revlist)
Add Comment
Please, Sign In to add comment