スタック

Last In First Outのデータ構造。
データを取り出すと最後に追加したデータが取り出されます。

class Stack
  def initialize(size)
    @max = size
    @ptr = 0
    @data = Array.new(size)
  end
  def push(obj)
    if @ptr < @max
      @data[@ptr] = obj
      @ptr += 1
    end
  end
  def pop
    return nil if @ptr <= 0
    @ptr -= 1
    obj = @data[@ptr]
    @data[@ptr] = nil
    return obj
  end
  def clear
    (@ptr - 1).step(0, -1){|i| @data[i] = nil }
    @ptr = 0
  end
  def isEmpty?
    @ptr == 0
  end
  def isFull?
    @ptr == @max
  end
#  def peek
#  end
  def size
    @ptr
  end
  def getData
    @data
  end
end

知識確認(out)→参考書確認(in)→実装(out)→バグ取りで1時間くらい。
実装そのものは15分くらい。