ArrayQueue
These notes are taken from Goodrich and Tomassia Data Structures
and Algorithms in Java, and are the copyright of the authors.
Pseudocode
// Data Structure Invariants:
// f index of q w/ front of queue, unless queue empty
// r index of q w/ next open slot
// f==r means queue is empty
Algorithm size()
return ( N - f + r ) mod N
Algorithm isEmpty()
return ( f==r )
Algorithm front()
if isEmpty() throw exception
else return q(f)
Algorithm dequeue()
if isEmpty() throw exception
else return q(f++ mod N)
Algorithm enqueue(o)
if isFull() throw exception
else q(r) gets o, and r++ mod N
Algorithm isFull()
return ( size==N-1 )