(一).双端队列
什么是双端队列?听起来好像是在一个队列的两端都可以做某件事情,普通的队列只能在一端进行插入而在另一端进行删除,而双端队列就把规定给放宽一点,在两端都可以进行插入删除操作的这么一个队列。用四个箭头来表示他们,在两端都可以入的元素也都可以出的元素,此时不称这两端一个是队头一个是队尾,因为两端都可以进行插入和删除操作,也就分不清哪是头哪是尾,所以就取名为一个叫end1一个叫end2。
栈与队列两种逻辑结构都是由这种逻辑结构加了一些约束而得到。如果把这个双端队列在一端进行约束(也就是说在一端我既不让他删除也不让他插入),那不就成栈了么;而在某一端限制一个,比如在某一端限制仅能进行元素插入操作,而在另一端仅能进行元素删除操作,那又回到了普通的队列;还可以加其他的约束条件,比如删除操作或者输出操作限制到只能在一端进行,而在另一端不做限制,这就叫输出受限的双端队列;若仅对插入操作进行限制,限制其在某一端进行那这就叫输入受限的双端队列。
某一端只有一个箭头代表了其中某一种操作受到限制。
- 常见提问类型
解题思路:栈有的队列数,队一定有;栈不可能的序列数,队要一个个试