/* cqueue.c Pedro Flynn - pflynn@microsoftsucks.org */ #include "cqueue.h" #include CQueue* cqueue_create() { CQueue* cqueue; if(!(cqueue = (CQueue*) malloc(sizeof(CQueue)))) return NULL; cqueue->size = 0; cqueue->last = NULL; return cqueue; } int cqueue_enqueue(CQueue* cqueue,const void* data) { CQueueElmt* newelement; if(!(newelement = (CQueueElmt*) malloc(sizeof(CQueueElmt)))) return -1; newelement->data = (void*) data; if(!cqueue->size) newelement->next = newelement; else{ newelement->next = cqueue->last->next; cqueue->last->next = newelement; } cqueue->last = newelement; cqueue->size++; return 0; } void* cqueue_dequeue(CQueue* cqueue) { CQueueElmt* oldelement; void* data; if(!cqueue->size) return NULL; oldelement = cqueue->last->next; data = oldelement->data; cqueue->last->next = oldelement->next; free(oldelement); cqueue->size--; return data; }