.. _ref-stack-queue:

-----------------
Stack and Queue
-----------------

The ``Stack`` and ``Queue`` types are a light-weight wrapper of a deque type, which respectively provide interfaces for LIFO and FIFO access.

Usage of Stack::

  s = Stack(Int)
  push!(s, x)
  x = top(s)
  x = pop!(s)

Usage of Queue::

  q = Queue(Int)
  enqueue!(q, x)
  x = front(q)
  x = back(q)
  x = dequeue!(q)

Both ``Stack`` and ``Queue`` implement the Iterator interface; iterating over ``Stack`` returns items in FILO order and iterating over ``Queue`` returns items in FIFO order. There is also a ``reverse_iter`` function implemented for both which returns items in the reverse order for each type (i.e. FIFO for ``Stack`` and LIFO for ``Queue``).
