#include #include "queue.h" using namespace std; void InitQueue(QueueT & q) { q.size = 0; q.front = 0; q.back = 0; return; } int Next(int i) { i++; if (i >= QUEUE_MAX) { i = 0; } return i; } void Enqueue(QueueT & q, ItemT item){ if (q.size < QUEUE_MAX) { q.data[q.back] = item; q.back =Next(q.back); q.size++; } else { cout << "Error, enqueue to a full queue!" << endl; } return; } ItemT Dequeue(QueueT & q){ ItemT i = ITEM_DEFAULT; if (q.size > 0) { i = q.data[q.front]; // fix front q.front = Next(q.front); // fix size if queue is empty q.size --; if (q.size == 0) { q.front =0; q.back = 0; } } else { cout <<"Error, dequeue from an empty queue" << endl; } return i; } ItemT Front(const QueueT & q){ ItemT i = ITEM_DEFAULT; if (q.size > 0) { i = q.data[q.front]; } else { cout <<"Error, front of an empty queue" << endl; } return i; } bool IsEmpty(const QueueT & q){ return q.size==0; } bool IsFull(const QueueT & q){ return q.size==QUEUE_MAX; } int Size(const QueueT & q){ return q.size; }