剑指offer——栈与队列相关 Queue,Deque,Stack

时间:2021-12-26 14:41:24

剑指offer——栈的压入、弹出序列

 

剑指offer——用两个栈来实现队列

 

剑指offer——调整数组顺序使奇数位于偶数前面

 

 

使用队列时注意:

判断是否为空(获取但不删除) queue.peek() == null  区别于queue.element()为空时抛异常

添加元素:queue.offer()  满了时 返回false,而add()满了时,会报错

弹出元素:queue.poll()  为空时 返回null, 而remove()满了时,会抛异常

而且要注意:Queue是一个接口,不能直接使用它,而需要使用实现了它的类

剑指offer——栈与队列相关 Queue,Deque,Stack

参考:Java 集合深入理解(9):Queue 队列

 

 Deque双端队列:

剑指offer——栈与队列相关 Queue,Deque,Stack

Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋壳。

Deque 继承自 Queue,直接实现了它的有 LinkedList, ArayDeque, ConcurrentLinkedDeque 等。

Deque 支持容量受限的双端队列,也支持大小不固定的。一般双端队列大小不确定。

Deque 接口定义了一些从头部和尾部访问元素的方法。比如分别在头部、尾部进行插入、删除、获取元素。和 Queue

类似,每个操作都有两种方法,一种在异常情况下直接抛出异常奔溃,另一种则不会抛异常,而是返回特殊的值,比如 false, null …

参考:Java 集合深入理解(10):Deque 双端队列

栈实现:

  • push 入栈
  • pop 栈顶元素出栈,并返回
  • peek 获取栈顶元素,并不删除
  • empty 

剑指offer——栈与队列相关 Queue,Deque,Stack

参考:Java 集合深入理解(13):Stack 栈