数据结构(栈的补充四)

115 阅读1分钟

(一).双端队列

什么是双端队列?听起来好像是在一个队列的两端都可以做某件事情,普通的队列只能在一端进行插入而在另一端进行删除,而双端队列就把规定给放宽一点,在两端都可以进行插入删除操作的这么一个队列。用四个箭头来表示他们,在两端都可以入的元素也都可以出的元素,此时不称这两端一个是队头一个是队尾,因为两端都可以进行插入和删除操作,也就分不清哪是头哪是尾,所以就取名为一个叫end1一个叫end2。

f78b604fda5a76b6818e7acb3e7da81.jpg

栈与队列两种逻辑结构都是由这种逻辑结构加了一些约束而得到。如果把这个双端队列在一端进行约束(也就是说在一端我既不让他删除也不让他插入),那不就成栈了么;而在某一端限制一个,比如在某一端限制仅能进行元素插入操作,而在另一端仅能进行元素删除操作,那又回到了普通的队列;还可以加其他的约束条件,比如删除操作或者输出操作限制到只能在一端进行,而在另一端不做限制,这就叫输出受限的双端队列;若仅对插入操作进行限制,限制其在某一端进行那这就叫输入受限的双端队列。

492f0c1eadb261d42364348f69b307e.jpg

某一端只有一个箭头代表了其中某一种操作受到限制。

  • 常见提问类型

解题思路:栈有的队列数,队一定有;栈不可能的序列数,队要一个个试

76270cd86608d9041c93533c00316b9.jpg

22cf65b22047a71790de91706892fe8.jpg

78344a0002185b5374651c2f4621ed7.jpg