如何从OCaml中的队列中删除top元素

时间:2012-06-22 05:21:36

标签: queue ocaml

有没有办法删除Ocaml队列中最顶层的元素?队列模块只有从前面删除的take和pop操作。

1 个答案:

答案 0 :(得分:5)

好吧,队列的定义是你只能访问或删除最少最近添加的元素。听起来你也想删除最近添加的元素,是吗?这种方法的一般结构称为deque,它允许您在两端添加和删除。您可以在Batteries Included Deque module中找到一个。

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