概念
- 栈是一种只允许在一端进行插入或删除的线性表
- 栈的操作端通常被称为栈顶,另一端被称为栈底
- 栈的插入操作称为进栈,栈删除操作被称为出栈
示例
就比如同学交作业的时候 ,从第一个交作业一次交到最后,第一个交作业的时候是最下面的,然后一次叠加,直到最后一个学生交完作业,我们可以知道当老师修改作业的时候会从上面一次修改,修改的过程就可以成为出栈
存储的结构
- 顺序存储的栈成为顺序栈,链式存储的栈称为链式栈
示意图
用java代码实现
public class StackX {
private int maxSize;
private long[] stackArray;
private int top;
private StackX(int max) {//设置放入栈最大可以存储的数组
maxSize = max;
stackArray = new long[maxSize];
top = 0;
}
public void push(long j) {//数组里面的元素进栈
stackArray[++top] = j;
}
public long pop() {//出栈
return stackArray[top--];
}
public long peek() {//获取栈顶的元素
return stackArray[top];
}
public boolean isEmpty() {//判断栈里面是否还有元素
return top == 0;
}
public boolean isFull() {
return (top == maxSize - 1);
}
public static void main(String[] args) {
StackX s = new StackX(10);
s.push(12);
s.push(13);
s.push(14);
s.push(15);
s.push(16);
System.out.println("栈顶元素为" + s.peek());
System.out.println("================");
while (!s.isEmpty()) {
long value = s.pop();
System.out.println("出栈顺序是" + value);
}
}
}
输出
从代码里面可以看出 输入的顺序和输出的顺序正好相反,这是应为最后入栈的数据项最先弹出,所以16最先被打印出来,这就是一个入栈和出栈的示例