堆栈原理:
数组模拟堆栈:
//数组模拟栈
class ArrayStack{
//栈顶
private int top = -1;
private int maxSize;
private int[] arrayStack;
public ArrayStack(int maxSize){
this.maxSize = maxSize;
arrayStack = new int[maxSize];
}
//栈是否满
public boolean isFull(){
return top == maxSize-1;
}
//栈是否为空
public boolean isNull(){
return top == -1;
}
/*
* [3] top=2
* [2] top=1
* [1] top=0
* top=-1
*
*
* */
//入栈
public void push(int data){
if(isFull()){
System.out.println("已经满了,无法入栈了");
return;
}
top++;
arrayStack[top] = data;
}
//出栈
public int pop(){
if(isNull()){
throw new RuntimeException("栈数据不能为空");
}
int value = arrayStack[top];
top--;
return value;
}
//显示栈数据
public void list(){
if(isNull()){
System.out.println("栈数据为空,无法显示栈数据");
return;
}
for(int i=top;i>=0;i--){
System.out.printf("arrayStack[%d]=%d",i,arrayStack[i]);
}
}
}
参考:韩顺片java数据结构和算法