栈(Stack):一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作
栈顶:进行数据插入和删除操作的一端
栈底:另一端
遵循先进先出的原则
栈:是一种数据结构;
虚拟机栈:是JVM运行是数据区的一部分,是一块内存空间,局部变量,方法开辟都 保存在这个区域里面;
栈帧:方法开辟出来的内存被称为栈帧,细化成某一个方法的内存
代码实现
import java.util.Arrays;
public class MyStack {
//用数组实现
private int[] elements;
private int size;
private final int Default_size = 5;
public MyStack() {
elements = new int[Default_size];
}
public MyStack(int capacity) {
if (capacity < 0) {
throw new RuntimeException("数组容量不能小于0");
} else if (capacity > 0) {
elements = new int[capacity];
} else {
elements = new int[Default_size];
}
}
public void push(int data) {
grow();
elements[size] = data;
size++;
}
private int[] grow() {
if (size == elements.length) {
this.elements = Arrays.copyOf(elements, 2 * elements.length);
}
return elements;
}
public int pop() {
int pop = peak();
size--;
return pop;
}
public int peak() {
if (isEmpty()) {
throw new RuntimeException("栈已为空,无法再弹出");
}
return elements[size - 1];
}
public boolean isEmpty() {
return size == 0;
}
public int getSize() {
return size;
}
}