-2

有什么方法可以删除 Ocaml 中队列的最顶部元素吗?Queue 模块只有从前面删除的 take 和 pop 操作。

4

1 回答 1

6

好吧,队列的定义是您只能访问或删除最近最少添加的元素。听起来您还想删除最近添加的元素,对吗?对此的一般结构称为双端队列,它允许您在两端添加和删除。您可以在Batteries Included Deque 模块中找到一个。

OCaml 标准库中没有这样的东西,但自己编写代码也不会那么难。您将元素划分为两个列表,一个是最近的,另一个是最近的。您的目标是使这两个列表的大小大致平衡,并且如果双端队列至少有两个元素,则要求它们都是非空的。(引自冈崎。)

于 2012-06-22T05:42:53.270 回答