void queueInit ( tQueue* q ) { if (q == NULL) { //kdyz nic queueError(QERR_INIT); //tak zarvat } else { for (unsigned int i = 0; i < QUEUE_SIZE; i++) { //vyprazdneni q -> arr[i] = '?'; } q -> f_index = 0; //vynulovani indexu q -> b_index = 0; } } int nextIndex ( int index ) { return (index + 1) % QUEUE_SIZE; } int queueEmpty ( const tQueue* q ) { return q -> f_index == q -> b_index; } int queueFull ( const tQueue* q ) { return q->f_index == nextIndex(q->b_index); } char queueFront ( const tQueue* q ) { if (queueEmpty(q) != 0) { // kdyz prazdna queueError(QERR_FRONT); //zarvat return -1; //zkoncit } else { return q -> arr[q -> f_index]; //vratit znak na prvnim miste } } void queueRemove ( tQueue* q ) { if (queueEmpty(q) != 0) { //kdyz prazdna queueError(QERR_REMOVE); //zarvat } else { q -> f_index = nextIndex(q -> f_index); //bude prvni nasledujici znak (protoci frontu) } } char queueGet ( tQueue* q ) { if (queueEmpty(q) != 0) { //kdyz prazdna queueError(QERR_GET); //zarvi return -1; //umri } else { char x = queueFront(q); //uloz prvni znak queueRemove(q); //odstrank prvni znak return x; //vrat byvaly porvni znak } } void queueUp ( tQueue* q, char c ) { if (queueFull(q) != 0) { //kdyz prazdna queueError(QERR_UP); //zarvi } else { q -> arr[q -> b_index] = c; //nacpi na prazdne misto znak q -> b_index = nextIndex(q -> b_index); //posun na dalsi prazdne misto } }