1 栈
1.1 概念
栈 (stack):也叫堆栈,是一种限定仅在表尾进行插入和删除的线性表。
一般把允许插入和删除的一端称为栈顶 (top),另一端称为栈底 (bottom),不含任何数据元素的栈称为空栈。又称为先进后出(Last In First Out)的线性表,简称LIFO结构。
1.2 栈的一般操作
//初始化一个栈
Stack<Integer> stack = new Stack<>();
//执行一次入栈操作
stack.push(1);
执行此操作后栈非空,栈内存在元素1。
此时打印栈得到结果:
System.out.println(stack);
[1]
为了验证栈是先入后出的特性,随后向栈中存入元素2,并打印栈顶元素。
Stack<Integer> stack = new Stack<>();
stack.push(1);
System.out.println(stack);
stack.push(2);
System.out.println(stack.peek());
获得结果
[1]
2
由此可见,第二次加入的元素2现在在栈顶,也即先入后出。
2 队列
2.1 队列的理解
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。
2.2 Queue队列
Queue是java中实现队列的接口,它总共只有6个方法,如下:
Queue的6个方法分类:
添加元素:add()、offer()
删除元素:remove()、poll()
取队头元素:element()、peek()
2.3 双端队列
通过deque接口实现,属于java.util包
Deque<T> deque = new ArrayDeque<>();
Deque<T> deque = new LinkedList<>();
常用方法如下:
插入元素 add()、addFirst()、addLast();
offer()、offerFirst()、offerLast();
删除元素 remove()、removeFirst()、removeLast();
poll()、pollFirst()、pollLast();
获取队头元素 peek()、peekrFirst()、peekLast();