版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wastematerial/article/details/81988181
栈---先进后出的数据结构,与队列相反。
package aobi.com.task;
public class StackByBianca <E>{
private Object[] stack = null;
private int top = -1;
private int maxTop = 0;
StackByBianca(){
this(10);
}
StackByBianca(int initSize){
if(initSize > 0){
this.maxTop = initSize;
stack = new Object [initSize];
top = -1;
}else{
throw new RuntimeException("初始化大小不能小于0:" + initSize);
}
}
public boolean isEmpty(){
return top == -1 ? true:false;
}
public boolean push(E e){
if(top == maxTop-1)
expansionStack();//扩栈
stack[++top] = e;
return true;
}
public E pop(){
if(isEmpty())
throw new RuntimeException("栈为空!");
return (E) stack[top--];
}
public E peek(){
if(isEmpty())
throw new RuntimeException("栈为空!");
return (E) stack[top];
}
public int search(E e){
int i = top;
while(i >= 0){
if(stack[i] == e)
break;
i--;
}
return i+1;
}
private void expansionStack(){
Object [] newStack = new Object [maxTop+10];
int newTop = -1;
while(isEmpty()){
newStack[++newTop]=pop();
}
this.stack = newStack;
this.maxTop+=10;
}
}