概念
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据在栈顶。
栈的使用
栈的模拟实现
public class MyStack {
int[] array;
//数组实现
int size;
public MyStack(){
array = new int[3];
//默认初始化容量为3
}
public int push(int e){
ensureCapacity();//检查是否需要扩容
array[size++] = e;
return e;
}
public int pop(){
//从栈顶弹出元素
int e = peek();
size--;
return e;
}
public int peek(){
//只查看栈顶的元素 不弹出
if(empty()){
throw new RuntimeException("栈为空,无法获取栈顶元素");
}
return array[size-1];
}
public int size(){
//获取栈的大小
return size;
}
public boolean empty(){
//判断栈是否为空
return 0 == size;
}
private void ensureCapacity(){
//扩容函数
if(size == array.length){
array = Arrays.copyOf(array, size*2);
}
}
}