int QueueEmpty (Queue *q)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
return q->front == NULL;
}
int EnQueue (Queue *q, QueueData x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
Node * node = (Node*)malloc(sizeof(Node)/sizeof(char));
if (node == NULL)
{
errno = MALLOC_ERROR;
return FALSE;
}
node->data = x;
node->next = NULL;
if (q->front == NULL)
{
q->front = node;
q->rear = node;
}
else
{
q->rear->next = node;
q->rear = node;
}
return TRUE;
}
int DeQueue (Queue *q, QueueData *x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueEmpty(q))
{
errno = EMPTY_QUEUE;
return FALSE;
}
Node *p = q->front;
*x = p->data;
q->front = p->next;
free(p);
if (q->front == NULL)
q->rear = NULL;
return TRUE;
}
int GetFront (Queue *q, QueueData *x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueEmpty(q))
{
errno = EMPTY_QUEUE;
return FALSE;
}
*x = q->front->data;
return TRUE;
}
int Destroy_Queue (Queue *q)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
int x;
while (QueueEmpty(q) != TRUE)
{
DeQueue(q, &x);
}
free(q);
return TRUE;
}
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
return q->front == NULL;
}
int EnQueue (Queue *q, QueueData x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
Node * node = (Node*)malloc(sizeof(Node)/sizeof(char));
if (node == NULL)
{
errno = MALLOC_ERROR;
return FALSE;
}
node->data = x;
node->next = NULL;
if (q->front == NULL)
{
q->front = node;
q->rear = node;
}
else
{
q->rear->next = node;
q->rear = node;
}
return TRUE;
}
int DeQueue (Queue *q, QueueData *x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueEmpty(q))
{
errno = EMPTY_QUEUE;
return FALSE;
}
Node *p = q->front;
*x = p->data;
q->front = p->next;
free(p);
if (q->front == NULL)
q->rear = NULL;
return TRUE;
}
int GetFront (Queue *q, QueueData *x)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueEmpty(q))
{
errno = EMPTY_QUEUE;
return FALSE;
}
*x = q->front->data;
return TRUE;
}
int Destroy_Queue (Queue *q)
{
if (q == NULL)
{
errno = ERROR;
return FALSE;
}
int x;
while (QueueEmpty(q) != TRUE)
{
DeQueue(q, &x);
}
free(q);
return TRUE;
}