1.栈——后进先出(Last In First Out)
Stack<> stack = new Stack<>();
栈中存在的一些操作方法,如下图所示。
2.栈的应用场景
1. 改变元素的序列
通过后进先出的策略,改变元素出栈的顺序。
2.将递归转化为循环
3.概念区分
栈是一种先进后出的数据结构。
虚拟机栈是JVM的一块内存空间。
栈帧是在函数的调用过程中,在java虚拟机栈上开辟的一块内存。
3.队列——先进先出(First In First Out)
底层通过链表来实现的
3.1循环队列
下标在最后再往后时:rear = (rear + 1) % elem.length;
下标最前再往前时:index = (index + array.length - offset) % array.length
3.2区分空满
1.
通过添加
size
属性记录
2.
保留一个位置
3.
使用标记
4.双向队列——(Double Ended Queue)
Deque
是一个接口,使用时必须创建
LinkedList
的对象。
Deque<Integer> stack = new ArrayDeque<>();//
双端队列的线性实现
Deque<Integer> queue = new LinkedList<>();//
双端队列的链式实现