Circular Lists
Given a pointer p to a node in a linear list, we cannot reach any of the nodes that precede the node pointed to by p.
A circular list has a pointer pointing from the last node to the front node rather than to NULL.
From any point in such a list it is possible to reach any other point in the list.
By convention we set rear to be the node p is pointing to and front to be p->next.