Очереди на массивах - 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");
}