
 /* Code for an array-based implementation of a generic stack.
 *
 */
public class GenArrayStack<E>
{
    int numElements;
    Object[] a;

    public GenArrayStack()
    {
        numElements = 0;
        a = new Object[ 10 ];
    }

    public void push( E e )
    {
        if ( a.length == numElements )
            doubleArray();

        a[ numElements ] = e;
        numElements++;
    }

    private void doubleArray()
    {
        Object[] newA = new Object[ a.length * 2 ];

        for ( int i = 0; i < a.length; i++ )
            newA[ i ] = a[ i ];

        a = newA;
    }

    public E pop()
    {
        if ( numElements == 0 )
            return null;
        numElements--;
        return( (E) a[ numElements ] );
    }

}
