2 USING: help.markup help.syntax kernel ;
4 ARTICLE: "dequeues" "Dequeues"
5 "A dequeue is a data structure with constant-time insertion and removal of elements at both ends. Dequeue operations are defined in the " { $vocab-link "dequeues" } " vocabulary."
7 "Dequeues must be instances of a mixin class:"
8 { $subsection dequeue }
9 "Dequeues must implement a protocol."
11 "Querying the dequeue:"
12 { $subsection peek-front }
13 { $subsection peek-back }
14 { $subsection dequeue-length }
15 { $subsection dequeue-member? }
16 "Adding and removing elements:"
17 { $subsection push-front* }
18 { $subsection push-back* }
19 { $subsection pop-front* }
20 { $subsection pop-back* }
21 { $subsection clear-dequeue }
22 "Working with node objects output by " { $link push-front* } " and " { $link push-back* } ":"
23 { $subsection delete-node }
24 { $subsection node-value }
25 "Utility operations built in terms of the above:"
26 { $subsection dequeue-empty? }
27 { $subsection push-front }
28 { $subsection push-all-front }
29 { $subsection push-back }
30 { $subsection push-all-back }
31 { $subsection pop-front }
32 { $subsection pop-back }
33 { $subsection slurp-dequeue }
34 "When using a dequeue as a queue, the convention is to queue elements with " { $link push-front } " and dequeue them with " { $link pop-back } "." ;
39 { $values { "dequeue" { $link dequeue } } { "?" "a boolean" } }
40 { $description "Returns true if a dequeue is empty." }
41 { $notes "This operation is O(1)." } ;
44 { $values { "obj" object } { "dequeue" dequeue } }
45 { $description "Push the object onto the front of the dequeue." }
46 { $notes "This operation is O(1)." } ;
49 { $values { "obj" object } { "dequeue" dequeue } { "node" "a node" } }
50 { $description "Push the object onto the front of the dequeue and return the newly created node." }
51 { $notes "This operation is O(1)." } ;
54 { $values { "obj" object } { "dequeue" dequeue } }
55 { $description "Push the object onto the back of the dequeue." }
56 { $notes "This operation is O(1)." } ;
59 { $values { "obj" object } { "dequeue" dequeue } { "node" "a node" } }
60 { $description "Push the object onto the back of the dequeue and return the newly created node." }
61 { $notes "This operation is O(1)." } ;
64 { $values { "dequeue" dequeue } { "obj" object } }
65 { $description "Returns the object at the front of the dequeue." } ;
68 { $values { "dequeue" dequeue } { "obj" object } }
69 { $description "Pop the object off the front of the dequeue and return the object." }
70 { $notes "This operation is O(1)." } ;
73 { $values { "dequeue" dequeue } }
74 { $description "Pop the object off the front of the dequeue." }
75 { $notes "This operation is O(1)." } ;
78 { $values { "dequeue" dequeue } { "obj" object } }
79 { $description "Returns the object at the back of the dequeue." } ;
82 { $values { "dequeue" dequeue } { "obj" object } }
83 { $description "Pop the object off the back of the dequeue and return the object." }
84 { $notes "This operation is O(1)." } ;
87 { $values { "dequeue" dequeue } }
88 { $description "Pop the object off the back of the dequeue." }
89 { $notes "This operation is O(1)." } ;