Guest User

Untitled

a guest
Apr 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1.  
  2. class Stack
  3.  
  4. class EmptyError < StandardError
  5. end
  6.  
  7. class Node
  8. attr_accessor :prev, :data
  9. def initialize(prev, data)
  10. @prev = prev
  11. @data = data
  12. end
  13. end
  14.  
  15. def initialize
  16. @cur = nil
  17. end
  18.  
  19. def empty?
  20. @cur.nil?
  21. end
  22.  
  23. def push(val)
  24. if @cur
  25. new = Node.new(@cur, val)
  26. @cur = new
  27. else
  28. @cur = Node.new(nil, val)
  29. end
  30. val
  31. end
  32.  
  33. def pop
  34. raise EmptyError if empty?
  35. popped = @cur
  36. @cur = @cur.prev
  37. popped.data
  38. end
  39.  
  40. def size
  41. count(@cur, 0)
  42. end
  43.  
  44. private
  45.  
  46. def count(node, memo)
  47. return memo if node.nil?
  48. if node.prev
  49. count(node.prev, memo+1)
  50. else
  51. memo + 1
  52. end
  53. end
  54.  
  55. end
Add Comment
Please, Sign In to add comment