目录
栈与Stack
1.实现一个自己的栈
2.Stack的基本使用
3.栈的一些oj题训练
4.栈,虚拟机栈,栈帧的区别
栈与Stack
栈 :一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO ( Last In First Out )的原则。压栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶 。出栈:栈的删除操作叫做出栈。 出数据在栈顶 。
特点是:后进先出。如图所示
1.实现一个自己的栈
下面是用java实现的栈结构:
import java.util.Arrays;public class MyStack {int[] array;int size;public MyStack(){array=new int[5];}public int push(int e){if(array.length==size){grow();}array[size++]=e;return e;}public int pop(){int a=peek();size--;return a;}public int peek() {if(size==0){throw new RuntimeException("栈为空,无法获取栈顶元素");}return array[size-1];}public int size(){return size;}public boolean empty(){return size==0;}private void grow() {array= Arrays.copyOf(array,array.length*2);}
}
2.Stack的基本使用
Java中的Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。Stack继承了Vector的所有方法,也有一些自己的方法,如下:
3.栈的一些oj题训练
1.括号匹配
2.逆波兰表达式求值
3.出栈入栈次序匹配
4.最小栈
4.栈,虚拟机栈,栈帧的区别
栈是一种先进后出的数据结构。
虚拟机栈是JVM的一块内存空间。
栈帧是在函数的调用过程中,在java虚拟机栈上开辟的一块内存。