Write the class CircularQueue. It should contain the following:
1. Default constructor
2. Some structure to contain the elements of the CircularQueue
3. head and tail references
4. peek() which returns the element in the front of the CircularQueue
5. remove() which returns the element in front of the CircularQueue
and deletes it from the CircularQueue and does nothing otherwise
6. offer() which adds an element to the CircularQueue if it can, and
does nothing otherwise
7. isEmpty() which returns true if the CircularQueue is empty
Compare your answer to the code for the Josephus problem.
Then go and solve the Josephus problem.