Код очереди:
class queue
{
private:
  int head, tail; // начальный и конечный индексы
  int q[10]; // очередь из десяти элементов
public:
  queue() : head(0),tail(0) // конструктор
  {}
  void enqueue(int number) // добавление в очередь
  {
  q[tail] = number;
  tail = (tail+1) % 10;
  }
  int dequeue () // удаление из очереди
  {
  int temp = q[head];
  head = (head+1) % 10;
  return temp;
  }
};
Не понимаю: Зачем переносить последний элемент в начало?
(Автор кода говорит, так положено во всех очередях)