栈和队列
栈 先入后出
队列 先进先出
vector 想象成一个ArrayList,区别就是vector是线程安全的
Stack & Queue 关键点
-
Stack:先入先出;添加、删除皆为O(1) FILO stack是class
-
Queue:先入先出;添加、删除皆为O(1) Queue是interface
查询是O(n) 元素是无序的,必须遍历
Deque:Double-End Queue双端队列 [dek]
- 简单理解:两端可以进出的Queue Double-End Queue
- 插入和删除都是O(1)
stack 用数组来模拟
看java代码里面关于Stack、Queue、Deque的工程实现
Stack methods
Queue methods
Interface Deque Deque是一个接口
methods
示例代码 - Stack
Stack stack = new Stack<>();
stack.push(1);
作业:
push可以用addFirst等等之类的改写
考得多的 Priority Queue 优先队列
-
插入操作:O(1)
-
取出操作:O(logN) - 按照元素的优先级取出
-
底层具体实现的数据结构较为多样和复杂:heap堆、bst(Binary Search Tree)二叉搜索树、treap
-
Priority Queue也是一个接口,底层可以用许多东西来实现