创建双端队列(deque)
迄今为止,我们已经实现了这样的队列:一端用于查询,称为后端,另一端用于排序,称为前端。因此,一般来说,每一端都应该用于特定的目的。但如果我们需要从两端进行查询和脱机操作呢?使用双端队列或 deque 概念就可以做到这一点。在 deque 中,两端都可用于 enqueue
和 dequeue
操作。如果我们看看使用链表实现的队列,就会发现我们可以使用链表实现在最后插入、在最先插入、在最后删除和在最先删除。如果我们在此基础上实现一个新的 deque
类,就能轻松实现我们的预期目标。下图描述了一个双端队列:

这是双端队列的实现:
Unresolved include directive in modules/ROOT/pages/ch04/ch4-13.adoc - include::example$Chapter04/11.php[]
现在我们将使用此类来检查双端队列的操作:
Unresolved include directive in modules/ROOT/pages/ch04/ch4-13.adoc - include::example$Chapter04/11.php[]
如果我们看一下前面的代码示例,首先在前面加上 Fred
,然后再在前面加上 John
。因此,现在的序列是 John
、Fred
。然后我们在后面添加 Keith
,接着在后面添加 Adiyan
。所以现在的序列是约翰、弗雷德、基思、阿迪扬。最后,我们在开头加上 Mikhael
。所以最后的序列是 Mikhael
、John
、Fred
、Keith
、Adiyan
。
由于我们是先从后面执行 dequeue,所以 Adiyan
会先出来,然后 Mikhael
从前面出来。前台的新偷看者将是 John
。下面是运行代码时的输出结果:
Adiyan
Mikhael
John