Sha256: 7b5aa0a94c5c5745024930f13d06ceb69853013342c451f2fa9307f6b5aefb9e

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

# A MinMaxStack is a stack that allows for Min and Max
# to be found in constant time, unlike a stack or
# array that generally takes linear time.
module ZagorskiADT
  class MinMaxStack
    def initialize
      @values = []
    end

    def self.help
      puts "Here are the functions for MinMaxStack:"
      puts "push(value)"
      puts "pop"
      puts "peek"
      puts "min"
      puts "max"
      puts "length"
      puts "show"
      puts "empty?"
    end

    def push(val)
      if @values.empty?
        @values.push([val, val, val])
      else
        cur_min = @values.last[1]
        cur_max = @values.last[2]
        @values.push([val, [val, cur_min].min, [val, cur_max].max])
        @values
      end
    end

    def pop
      @values.pop[0]
    end

    def peek
      @values.last[0]
    end

    def min
      @values.empty? ? "Empty" : @values.last[1]
    end

    def max
      @values.empty? ? "Empty" : @values.last[2]
    end

    def length
      @values.length
    end

    def show
      showthis = []
      @values.map{|value| value[0]}
    end

    def empty?
      @values.empty?
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ZagorskiADT-0.1.2 lib/ZagorskiADT/AbstractDataTypes/MinMaxStack.rb
ZagorskiADT-0.1.1 lib/ZagorskiADT/AbstractDataTypes/MinMaxStack.rb
ZagorskiADT-0.1.0 lib/ZagorskiADT/AbstractDataTypes/MinMaxStack.rb