/*
 * โครงสร้างข้อมูล : ฉบับวาจาวา
 * http://www.cp.eng.chula.ac.th/~somchai/books
 */
package dataStructures;

import java.util.NoSuchElementException;

/**
 * คลาสที่สร้างกองซ้อนด้วยอาเรย์
 * @author สมชาย ประสิทธิ์จูตระกูล
 */
public class ArrayStack implements Stack {
  private Object[] elementData;
  private int size;

  public ArrayStack(int cap) {
    elementData = new Object[cap];
  }
  public boolean isEmpty() {
    return size == 0;
  }
  public int size() {
    return size;
  }
  public void push(Object e) {
    if (size == elementData.length) {
      Object[] a = new Object[2 * size];
      for (int i = 0; i < size; i++)
        a[i] = elementData[i];
      elementData = a;
    }
    elementData[size++] = e;
  }
  public Object peek() {
    if (isEmpty())
      throw new NoSuchElementException();
    return elementData[size-1];
  }
  public Object pop() {
    Object e = peek();
    elementData[--size] = null;
    return e;
  }
}