文章目录
一、什么是栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。
特点:后进先出
二、Java虚拟机栈
(1)栈帧:调用函数是为其开辟的内存叫栈帧。
三、Java基本库中栈的基本使用
public static void main(String[] args) {
Stack<Integer> stack= new Stack<Integer>();
//入栈
stack.push(3);//栈底
stack.push(4);
stack.push(5);
stack.push(7);//栈顶
//出栈:弹出栈顶元素
System.out.println(stack.pop());//7
//再弹一次,此时栈顶元素为5了,如下。
System.out.println(stack.pop());
//获取栈顶元素但不删除,这时的栈顶元素以及是4了
System.out.println(stack.peek());
//判断栈顶元素是否为空
System.out.println(stack.empty());
Stack<Integer> stack1=new Stack<>();
System.out.println(stack1.empty());
//获取栈中的元素的位置,栈顶为1号,此时stack中有3,4两个元素,所以4元素的位置为1号
System.out.println(stack.search(4));
//使用父类的方法,stack继承自Vector
System.out.println(stack.isEmpty());
}
四、中缀表达式、后缀表达式、前缀表达式的转化。
(1)、后缀表达式求值:
逆波兰表达式求值:
Stack<Integer> stack=new Stack<>();
public int evalRPN(String[] tokens) {
for(int i=0;i<tokens.length;i++){
String val=tokens[i