Очереди на массивах - EcsFlash/DataTypes GitHub Wiki

Исходный код - тут

Инициализация очереди

QueueArr(int _size) {
	head = 0;
	tail = -1;
	length = 0;
        size = _size;
	que = new int[size];
}

Очистка очереди

	~QueueArr(){
		delete[] que;
		que = nullptr;
	}

Добавление элемента

void enque(T elem){
	if (length < size) {
		tail++;
		tail = tail % size;
		que[tail] = elem;
		length++;
        }
}

Удаление элемента

void deque(){
if (length > 1) {
	head++;
	head %= size;
	length--;
}
else if (length == 1) {
	head = 0;
	tail = -1;
	length = 0;
}
}

Проверка на пустоту

bool isEmpty(){
	return length == 0;
}

Просмотр первого элемента

T peek(){
	if(head>0)
		return que[head];
	else
		throw runtime_error("Queueueueueueueu peek what???? ueueu is empty");
}