
Data Structure

This illustrates a data structure, a means of storing data within a program.

You may see other such structures in the Data Structures category.
 Illustration of FIFO behavior
Task

Create a queue data structure and demonstrate its operations.

(For implementations of queues, see the FIFO task.)



Operations:

   push       (aka enqueue) - add element
   pop         (aka dequeue) - pop first element
   empty     - return truth value when empty


See also

 Array
 Associative array: Creation, Iteration
 Collections
 Compound data type
 Doubly-linked list: Definition, Element definition, Element insertion, List Traversal, Element Removal
 Linked list
 Queue: Definition, Usage
 Set
 Singly-linked list: Element definition, Element insertion, List Traversal, Element Removal
 Stack


  ( queue
  =   (list=)
      (enqueue=.(.!arg) !(its.list):?(its.list))
      ( dequeue
      =   x
        .   !(its.list):?(its.list) (.?x)
          & !x
      )
      (empty=.!(its.list):)
  )
& new$queue:?Q
& (   (Q..enqueue)$1
    & (Q..enqueue)$2
    & (Q..enqueue)$3
    & out$((Q..dequeue)$)
    & (Q..enqueue)$4
    & out$((Q..dequeue)$)
    & out$((Q..dequeue)$)
    &   out
      $ ( The
          queue
          is
          ((Q..empty)$&|not)
          empty
        )
    & out$((Q..dequeue)$)
    &   out
      $ ( The
          queue
          is
          ((Q..empty)$&|not)
          empty
        )
    & out$((Q..dequeue)$)
    & out$Success!
  | out$"Attempt to dequeue failed"
  )
;