class Algorithmable::Cups::StacksAndQueues::TwoStacksQueue
Public Class Methods
new()
click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/two_stacks_queue.rb, line 7 def initialize @stack_a = new_lifo_queue @stack_b = new_lifo_queue end
Public Instance Methods
dequeue()
click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/two_stacks_queue.rb, line 23 def dequeue return @stack_b.dequeue unless @stack_b.empty? @stack_b.push @stack_a.pop until @stack_a.empty? @stack_b.pop end
enqueue(item)
click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/two_stacks_queue.rb, line 16 def enqueue(item) unless @stack_b.empty? @stack_a.push @stack_b.pop until @stack_b.empty? end @stack_a.push(item) end
peek()
click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/two_stacks_queue.rb, line 29 def peek return @stack_b.peek unless @stack_b.empty? @stack_b.push @stack_a.pop until @stack_a.empty? @stack_b.peek end
size()
click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/two_stacks_queue.rb, line 12 def size @stack_a.size + @stack_b.size end