rendered paste body#include <malloc.h>#define QMAX 3typedef struct{ int id;} TCB;typedef struct{ TCB * arr[QMAX]; int first; int last; int empty;} tcbqueue;void initialize_queue(tcbqueue * q){ q->first = 0; q->last = 0; q->empty = 1;}int qpush( tcbqueue * q, TCB * addme ){ if( (q->first != q->last) || (q->first == q->last && q->empty) ) { q->arr[q->last++] = addme; if(q->last == QMAX) q->last = 0; if(q->empty) q->empty = 0; return 1; } return 0;}TCB * qpop(tcbqueue * q){ if( q->first != q->last || (q->first == q->last && !q->empty) ) { TCB * ret = q->arr[q->first++]; if(q->first == QMAX) q->first = 0; if(q->first == q->last) q->empty = 1; return ret; } return 0;}int main(){ tcbqueue q; TCB * t = (TCB*)malloc(sizeof(TCB)); TCB * t2 = (TCB*)malloc(sizeof(TCB)); TCB * t3 = (TCB*)malloc(sizeof(TCB)); TCB * t4 = (TCB*)malloc(sizeof(TCB)); initialize_queue(&q); qpush(&q, t); qpush(&q,t2); qpush(&q,t3); qpush(&q,t4); qpop(&q); qpop(&q); qpop(&q); qpop(&q); qpush(&q,t2); qpush(&q,t4); qpush(&q, t); qpush(&q,t3); qpop(&q); return 0;}