// File: QueueAr.h // Array Queue ADT DEfinition #ifndef QUEUE_AR_H #define QUEUE_AR_H template class Queue { public: // Constructor Queue(); // Observers int EmptyQ(); int FullQ(); /* Insert on Rear */ void InsertQ(QueueElementType Data); /* Remove from Front */ void RemoveQ(QueueElementType &Data); // Look at Next Element without removing QueueElementType NextElt(); // Number of Items in the Queue int NumElts(); private: int Front,Rear,Elts; QueueElementType Info[MaxElts]; }; // File: QueueAr.cpp // Array Queue ADT Implementation template Queue::Queue() {Front=0; Rear=0; Elts=0;} template int Queue::EmptyQ() {return (!Elts);} template int Queue::FullQ() {return (Elts==MaxElts);} /* Insert on Rear */ template void Queue::InsertQ(QueueElementType Data) {Rear=(Rear+1) % MaxElts; Info[Rear]=Data; Elts++; } /* Remove from Front */ template void Queue::RemoveQ(QueueElementType &Data) {Front=(Front+1) % MaxElts; Data=Info[Front]; (Elts)--; } template QueueElementType Queue::NextElt() {return(Info[(Front+1) % MaxElts]);} template int Queue::NumElts() {return(Elts);} #endif