栈( stack )是限定仅在表尾进行插入和删除操作的线性表
先入后出。 出栈pop,入栈push
代码实现
核心:需要一个实时指向栈顶的“指针” top
class ArrayStack {
private int maxSize;
private int[] stack;
private int top = -1;//栈顶
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
stack = new int[this.maxSize];//初始化栈数组
}
//栈满
public boolean isFull() {
return top == maxSize - 1;
}
//栈空
public boolean isEmpty() {
return top == -1;
}
//入栈
public void push(int value) {
if(isFull()) {
throw new RuntimeException("栈满,不能存放数据");
}
top ++;
stack[top] = value;
}
//出栈
public int pop() {
if(isEmpty()) {
throw new RuntimeException("栈空,请先存放数据");
}
int value = stack[top];
stack[top] = 0;
top --;
return value;
}
//遍历
public void list() {
if(isEmpty()) {
System.out.println("栈空,请先存放数据");
return;
}
for(int i = top; i > -1; i --) {
System.out.printf("stack[%d]=%d\n",i,stack[i]);
}
}
}