模块 Stdlib.Stack

module Stack: Stack

非同步访问

对栈的非同步访问可能导致无效的队列状态。因此,对栈的并发访问必须同步(例如使用 Mutex.t)。

type !'a t 

包含类型为 'a 元素的栈的类型。

exception Empty

Stack.popStack.top 应用于空栈时引发。

val create : unit -> 'a t

返回一个新的栈,初始为空。

val push : 'a -> 'a t -> unit

push x s 将元素 x 添加到栈 s 的顶部。

val pop : 'a t -> 'a

pop s 删除并返回栈 s 中最顶部的元素,如果栈为空则引发 Stack.Empty

val pop_opt : 'a t -> 'a option

pop_opt s 删除并返回栈 s 中最顶部的元素,如果栈为空则返回 None

val drop : 'a t -> unit

drop s 删除栈 s 中最顶部的元素,如果栈为空则引发 Stack.Empty

val top : 'a t -> 'a

top s 返回栈 s 中最顶部的元素,如果栈为空则引发 Stack.Empty

val top_opt : 'a t -> 'a option

top_opt s 返回栈 s 中最顶部的元素,如果栈为空则返回 None

val clear : 'a t -> unit

丢弃栈中的所有元素。

val copy : 'a t -> 'a t

返回给定栈的副本。

val is_empty : 'a t -> bool

如果给定栈为空则返回 true,否则返回 false

val length : 'a t -> int

返回栈中元素的数量。时间复杂度 O(1)

val iter : ('a -> unit) -> 'a t -> unit

iter f s 依次将 f 应用于 s 的所有元素,从栈顶元素到栈底元素。栈本身保持不变。

val fold : ('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'acc

fold f accu s 等于 (f (... (f (f accu x1) x2) ...) xn),其中 x1 是栈顶,x2 是第二个元素,xn 是栈底元素。栈本身保持不变。

栈和序列

val to_seq : 'a t -> 'a Seq.t

从栈顶到底部迭代。在迭代期间修改栈是安全的。

val add_seq : 'a t -> 'a Seq.t -> unit

将序列中的元素添加到栈顶。

val of_seq : 'a Seq.t -> 'a t

从序列创建栈。