#include "queue.h" void initQueue(Queue q) { q->qhead = NULL; q->qtail = NULL; } void enQueue(Queue q, int y) { elem * tmp = (elem*)malloc(sizeof(elem)); if (!tmp) retreat("fail to enQueue"); tmp->y = y; tmp->next = NULL; if (!q->qtail) { q->qtail = tmp; q->qhead = tmp; } else { q->qtail->next = tmp; q->qtail = tmp; } } int deQueue(Queue q) { bool flag = false; if (!q->qhead) retreat("Empty queue"); if (q->qhead == q->qtail) flag = true; elem * tmp = q->qhead; int p = tmp->y; q->qhead = tmp->next; free(tmp); if (flag) q->qtail = q->qhead; return p; } bool emptyQueue(Queue q) { if (q->qhead) return false; return true; } void purgeQueue(Queue q) { elem * tmp; while (q->qhead) { tmp = q->qhead; q->qhead = tmp->next; free(tmp); } } void printHead(Queue q) { printf("Queue head is %d\n", q->qhead->y); } void printQueue(Queue q) { elem * tmp = q->qhead; while (tmp) { printf("%d ",tmp->y); tmp = tmp->next; } printf("\n"); }