// ******************************************************** // Implementation file QueueA.cpp for the ADT queue. // Circular array-based implementation. // The array has indexes to the front and back of the // queue. A counter tracks the number of items currently // in the queue. // ******************************************************** #include "QueueA.h" // header file queueClass::queueClass(): Front(0), Back(MAX_QUEUE-1), Count(0) { } // end default constructor bool queueClass::QueueIsEmpty() const { return bool(Count == 0); } // end QueueIsEmpty void queueClass::QueueInsert(queueItemType NewItem, bool& Success) { Success = bool(Count < MAX_QUEUE); if (Success) { // queue is not full; insert item Back = (Back+1) % MAX_QUEUE; Items[Back] = NewItem; ++Count; } // end if } // end QueueInsert void queueClass::QueueDelete(bool& Success) { Success = bool(!QueueIsEmpty()); if (Success) { // queue is not empty; remove front Front = (Front+1) % MAX_QUEUE; --Count; } // end if } // end QueueDelete void queueClass::QueueDelete(queueItemType& QueueFront, bool& Success) { Success = bool(!QueueIsEmpty()); if (Success) { // queue is not empty; retrieve and remove front QueueFront = Items[Front]; Front = (Front+1) % MAX_QUEUE; --Count; } // end if } // end QueueDelete void queueClass::GetQueueFront(queueItemType& QueueFront, bool& Success) const { Success = bool(!QueueIsEmpty()); if (Success) // queue is not empty; retrieve front QueueFront = Items[Front]; } // end GetQueueFront // End of implementation file