概念
1.栈是一个先入后出(FILO)的线性结构
2.对栈操作时,只在栈顶操作,栈底是固定的
3.栈有入栈(push)和出栈(pop)操作
入栈时:先移动指针再放入数据
出栈时:先弹出数据再移动指针
图示
Java代码(数组实现)
class ArrayStack {
private int top;//栈顶指针
private int[] array;
private int maxSize;//栈容量
//初始化栈 栈顶为-1
public ArrayStack(int maxSize) {
this.top = -1;
this.maxSize = maxSize;
array = new int[this.maxSize];
}
//判断栈是否为空
public boolean isEmpty() {
return top == -1;
}
//判断栈是否已满
public boolean isFull() {
return top == maxSize - 1;
}
//入栈
public void push(int value) {
if (isFull()) {
throw new RuntimeException("栈已满");
}
array[++top] = value;
}
//出栈
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈为空");
}
return array[top--];
}
//遍历栈中元素,从栈顶开始遍历
public void display() {
if (isEmpty()) {
throw new RuntimeException("栈为空");
}
for (int i = top; i >= 0; i--) {
System.out.print(array[i] + "\t");
}
}
}