Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 
Эффективный размер - длина очереди минус один, чтобы не делать специальных проверок (fast)
#include "queue.h"

s8 S_last =0; // number of the last element of slow-speed queue
s8 S_first =0; // number of the first element of slow-speed queue

int Queue[Q_SIZE]={0};


s8 S_push(int inpElem){

 S_last%=Q_SIZE;
 if ((S_last+1)%Q_SIZE == S_first)    return 1;
    
 Queue[S_last++] = inpElem;
 S_last%=Q_SIZE;
 return 0;
}

int S_pull(void){
 int pullVar;

 if (S_last == S_first)return -1;
 pullVar = Queue[S_first++];
 S_first%=Q_SIZE;
    
return pullVar;
}