queue.c File Reference
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
#include "types.h"
Go to the source code of this file.
Function Documentation
queue_t* create_queue |
( |
|
) |
|
Definition at line 35 of file queue.c.
00036 {
00037 queue_t *q = (queue_t *)malloc(sizeof(queue_t));
00038 q->head = NULL;
00039 q->tail = NULL;
00040 q->count = 0;
00041
00042 return q;
00043 }
void* dequeue_item |
( |
queue_t * |
q |
) |
|
Definition at line 81 of file queue.c.
00082 {
00083 void *item;
00084 queue_node_t *node;
00085
00086 oassert(q != NULL);
00087 oassert(q->head != NULL);
00088
00089 q->count--;
00090
00091 node = q->head;
00092 item = node->item;
00093 q->head = q->head->next;
00094 if (q->head == NULL)
00095 q->tail = NULL;
00096
00097 free(node);
00098
00099 return item;
00100 }
void destroy_queue |
( |
queue_t * |
q |
) |
|
void enqueue_item |
( |
queue_t * |
q, |
|
|
void * |
item | |
|
) |
| | |
Definition at line 48 of file queue.c.
00049 {
00050 queue_node_t *node;
00051
00052
00053
00054
00055
00056
00057
00058
00059 oassert(item != NULL);
00060 oassert(q != NULL);
00061 node = (queue_node_t *)malloc(sizeof(queue_node_t));
00062 node->next = NULL;
00063 node->item = item;
00064
00065 q->count++;
00066
00067
00068 if (q->tail == NULL)
00069 q->tail = node;
00070 else
00071 q->tail->next = node;
00072 q->tail = node;
00073
00074 if (q->head == NULL)
00075 q->head = node;
00076 }
int is_empty |
( |
queue_t * |
q |
) |
|
Definition at line 117 of file queue.c.
00118 {
00119 return q->head == NULL;
00120 }