package com.github.chaoswang.learning.java.stack; import java.util.Arrays; import java.util.EmptyStackException; public class Stack<E> { private int size = 0; private int initialSize; private Object[] elements = null;//���Ը�Ϊ���Լ���ArrayList��ʵ�� public Stack(int initialSize){ this.initialSize = initialSize; elements = new Object[initialSize]; } //ѹջ public void push(E element){ //�ﵽ�������ޣ���initialSize����100% if(++size == elements.length){ elements = Arrays.copyOf(elements, size + initialSize); } elements[size - 1] = element; } //�ж�ջ�Ƿ�Ϊ�� public boolean empty(){ return size <= 0? true : false; } public int size(){ return size; } //�鿴ջ��Ԫ�� public E peek(){ if(size == 0){ throw new EmptyStackException(); } return (E)elements[size - 1]; } //����ջ��Ԫ�� public E pop(){ if(size == 0){ throw new EmptyStackException(); } E removed = (E)elements[size -1]; elements[size -1] = null; size--; return removed; } public int search(E element) { int index = 0; for (int i = 0; i < size - 1; i++) { if (element.equals(elements[i])) { index = (size -1) - i; break; } } return index; } }