基于数组实现的简易栈
public class MyStack<E> {
private Object[] data=null;
private int maxSize=0;
private int top=-1;
MyStack(){
this(10);
}
MyStack(int initSize){
if(initSize >=0){
this.maxSize = initSize;
data = new Object[initSize];
top = -1;
}else{
throw new RuntimeException("初始化非法:" + initSize);
}
}
public boolean isEmpty(){
return top==-1? true:false;
}
public boolean push(E e){
if (top==maxSize-1){
throw new RuntimeException("栈已满");
}else{
data[++top]=e;
return true;
}
}
public E pop(){
if (top==-1){
throw new RuntimeException("栈为空!");
}else{
E e= (E)data[top];
data[top--]=null;
return e;
}
}
public int search(E e){
if (top==-1){
throw new RuntimeException("栈为空!");
}else{
for (int i = 0; i <data.length ; i++) {
if (e==(E)data[i]){
return i;
}
}
return -1;
}
}
public E peek(){
if (top==-1){
throw new RuntimeException("栈为空!");
}else{
return (E)data[top];
}
}
}