7 struct Queue * createQueue() {
8 return RUNMALLOC(sizeof(struct Queue));
11 int isEmpty(struct Queue *queue) {
12 return queue->head==NULL;
15 struct QueueItem * addNewItem(struct Queue * queue, void * ptr) {
16 struct QueueItem * item=RUNMALLOC(sizeof(struct QueueItem));
19 if (queue->head==NULL) {
23 item->next=queue->head;
24 queue->head->prev=item;
30 void removeItem(struct Queue * queue, struct QueueItem * item) {
31 struct QueueItem * prev=item->prev;
32 struct QueueItem * next=item->next;
33 if (queue->head==item)
37 if (queue->tail==item)
44 struct QueueItem * getTail(struct Queue * queue) {
48 struct QueueItem * getNext(struct QueueItem * qi) {