**栈:**是一个先入后出的有序列表,元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。
最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元
素最先删除,最先放入的元素最后删除
类的定义
public class ArrayStack {
public int top = -1; //栈底指针
public int[] maxsize;
public int maxSize;//栈的最大容量
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
this.maxsize = new int[maxSize];
}
相关方法
//判空
public boolean isEmpty() {
return top == -1;
}
//判满
public boolean isFull() {
return top == maxSize - 1;
}
//压栈
public void push(int val) {
if (isFull()) {
System.out.println("栈满,无法添加数据");
return;
} else {
top++;
maxsize[top] = val;
}
}
//弹栈
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈为空,无法出栈");
}
int temp = maxsize[top];
top--;
return temp;
}
//显示栈中的结点信息
public void showStack() {
if(isEmpty()){
System.out.println("栈为空");
return;
}
for(int i=top;i>=0;i--){
System.out.print(maxsize[i]+" ");
}
}
//线上当前栈顶元素
public int peek() {
return maxsize[top];
}
}