Go to the first, previous, next, last section, table of contents.

# Stacks

Stacks are declared as an "abstract" class. They are currently implemented in any of three ways.

`VStack`
  implement fixed sized stacks via arrays.
`XPStack`
  implement dynamically-sized stacks via XPlexes.
`SLStack`
  implement dynamically-size stacks via linked lists.

All possess the same capabilities. They differ only in constructors. VStack constructors require a fixed maximum capacity argument. XPStack constructors optionally take a chunk size argument. SLStack constructors take no argument.

Assume the declaration of a base element `x`.

`Stack s; or Stack s(int capacity)`
  declares a Stack.
`s.empty()`
  returns true if stack s is empty.
`s.full()`
  returns true if stack s is full. XPStacks and SLStacks never become full.
`s.length()`
  returns the current number of elements in the stack.
`s.push(x)`
  pushes x on stack s.
`x = s.pop()`
  pops and returns the top of stack
`s.top()`
  returns a reference to the top of stack.
`s.del_top()`
  pops, but does not return the top of stack. When large items are held on the stack it is often a good idea to use `top()` to inspect and use the top of stack, followed by a `del_top()`
`s.clear()`
  removes all elements from the stack.

Go to the first, previous, next, last section, table of contents.