Skip to content

Instantly share code, notes, and snippets.

@JoshCheek
Created July 23, 2011 13:53
Show Gist options
  • Save JoshCheek/1101454 to your computer and use it in GitHub Desktop.
Save JoshCheek/1101454 to your computer and use it in GitHub Desktop.
The stack from my Pry screencast
# The stack I wrote for http://vimeo.com/26391171
# Note that there is an intentional bug in the each method :)
class Stack
Node = Struct.new :data, :next
def push(data)
@head = Node.new data, @head
end
def pop
return unless @head
data = @head.data
@head = @head.next
data
end
##
# Iterates across the stack
#
# stack = Stack.new
# stack.push 5
# stack.push "abc"
# array = []
# stack.each { |element| array << element }
# array # => ["abc", 5]
def each
crnt = @head
loop do
yield crnt.data
crnt = crnt.next
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment