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