Sha256: fe20f7dce7e9c7c67715bc6490011d5e3b4d326a1932b85e0399616e70671679

Contents?: true

Size: 970 Bytes

Versions: 7

Compression:

Stored size: 970 Bytes

Contents

# A StackQueue works just like a queue, but it's based on
# a Stack.  Functionality-wise, it's exactly the same
# as a queue.  I mainly made it as an exercise leading
# up to MinMaxStackQueue.
module Zadt
  class StackQueue
    def initialize
      @in = Stack.new
      @out = Stack.new
    end

    def self.help
      puts "Here are the functions for StackQueue:"
      puts "#show"
      puts "#enqueue(value)"
      puts "#dequeue"
      puts "#length"
      puts "#empty?"
    end

    def self.methods
      self.help
    end

    def help
      StackQueue.help
    end

    def methods
      help
    end

    def show
      @out.show.reverse + @in.show
    end

    def enqueue(val)
      @in.push(val)
    end

    def dequeue
      if @out.empty?
        @in.length.times do
          @out.push(@in.pop)
        end
      end
      @out.pop
    end

    def length
      @in.length + @out.length
    end

    def empty?
      @values.empty?
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
zadt-0.1.8 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.7 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.6 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.5 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.4 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.3 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb
zadt-0.1.2 lib/zadt/AbstractDataTypes/MinMaxStackQueue/StackQueue.rb