Based on the description of the problem, an intuitive data structure that meets all the requirements would be a ring where the head and the tail are adjacent to each other.
Since there does not exist such data structure, we will use an array to simulate such behavior. I've also inserted a pictorial representation in the below.
Visual:
As seen in the below example, the below circular Queue is of a maximum capacity of 4.
Since we follow the FIFO properties in a Queue, Index 0 is empty due to a Deque operation being called.
The maximum capacity is 4 however it's current size is 3. In order to take advantage of the empty space, we need to access the first index.
Since we insert at the rear in a Queue, we use the below formula to access the 0th index.