add Dllist.iter_l, reset
This commit is contained in:
parent
10fbd898c1
commit
69f182d0c2
|
@ -25,6 +25,12 @@ let create () =
|
|||
|
||||
let is_empty seq = seq.next == seq
|
||||
|
||||
let reset seq =
|
||||
begin
|
||||
seq.next <- seq;
|
||||
seq.prev <- seq;
|
||||
end
|
||||
|
||||
let remove node =
|
||||
if node.node_active then begin
|
||||
node.node_active <- false;
|
||||
|
@ -74,6 +80,15 @@ let fold_r f seq acc =
|
|||
in
|
||||
loop seq.prev acc
|
||||
|
||||
let iter_l f seq =
|
||||
let rec loop curr =
|
||||
if curr != seq then
|
||||
let node = node_of_seq curr in
|
||||
if node.node_active then f node.node_data;
|
||||
loop node.node_next
|
||||
in
|
||||
loop seq.next
|
||||
|
||||
let find f seq =
|
||||
let rec loop curr =
|
||||
if curr == seq then
|
||||
|
|
|
@ -21,6 +21,9 @@ val create : unit -> 'a t
|
|||
val is_empty : 'a t -> bool
|
||||
(** Returns [true] iff the given sequence is empty *)
|
||||
|
||||
val reset : 'a t -> unit
|
||||
(** [reset ()] is a lazy way to remove all the elements from the sequence *)
|
||||
|
||||
val add_l : 'a -> 'a t -> 'a node
|
||||
(** [add_l x s] adds [x] to the left of the sequence [s] *)
|
||||
|
||||
|
@ -57,6 +60,10 @@ val fold_r : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b
|
|||
where [e1], [e2], ..., [en] are the elements of [s]
|
||||
*)
|
||||
|
||||
val iter_l : ('a -> unit) -> 'a t -> unit
|
||||
(** [iter_l f s] applies [f] on all elements of [s] starting from
|
||||
the left *)
|
||||
|
||||
val find : ('a -> bool) -> 'a t -> 'a
|
||||
(** [find_node_l f s] returns the first element of [s] starting from the left
|
||||
that satisfies [f] or raises [Not_found] if none exists. *)
|
||||
|
|
Loading…
Reference in New Issue