4 struct Queue * createQueue() {
5 return RUNMALLOC(sizeof(struct Queue));
8 int isEmpty(struct Queue *queue) {
9 return queue->head==NULL;
12 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
13 struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
16 if (queue->head==NULL) {
20 item->next=queue->head;
21 queue->head->prev=item;
27 void removeItem(struct Queue * queue, struct QueueItem * item) {
28 struct QueueItem * prev=item->prev;
29 struct QueueItem * next=item->next;
30 if (queue->head==item)
34 if (queue->tail==item)
41 struct QueueItem * getTail(struct Queue * queue) {