1 Imperative Queues
(require data/queue) |
This module provides a simple mutable queue representation, providing first-in/first-out semantics.
Operations on queues mutate it in a thread-unsafe way.
procedure
(make-queue) → queue?
This takes constant time, independent of the number of elements in q.
procedure
(enqueue-front! q v) → void?
q : queue? v : any/c
This takes constant time, independent of the number of elements in q.
procedure
q : non-empty-queue?
This takes constant time, independent of the number of elements in q.
Examples: | ||||||||||||||||||||||||||||||||||
|
This takes time proportional to the number of elements in q (assuming that pred? takes constant time, independent of the number of elements in q). It does not allocate and it calls pred? exactly once for each element of q.
Examples: | ||||||||||||||||||||||
|
procedure
(queue->list queue) → (listof any/c)
queue : queue?
This takes time proportional to the number of elements in q.
Examples: | ||||||||||||||||
|
procedure
(queue-length queue) → exact-nonnegative-integer?
queue : queue?
This takes constant time, independent of the number of elements in q.
Examples: | |||||||||||||||||||
|
procedure
(queue-empty? q) → boolean?
q : queue?
This takes constant time, independent of the number of elements in q.
Examples: | ||||||||||||||||
|
This takes constant time, independent of the size of the argument v.
Examples: | ||||
|
procedure
(non-empty-queue? v) → boolean?
v : any/c
This takes constant time, independent of the size of the argument v.
Examples: | |||||||||
|
value
value