// Queue with a circular array #include // Provides size_t #include // Provides assert template class Queue { public: enum { CAPACITY = 30 }; // static const size_t CAPACITY = 30; Queue( ); void insert(const Item& entry); Item get_front( ); size_t size( ) const { return count; } bool is_empty( ) const { return (count == 0); } private: Item data[CAPACITY]; // Partially-filled array size_t front; // Index of item at front of the queue size_t rear; // Index of item at rear of the queue size_t count; // Total number of items in the queue // private HELPER MEMBER FUNCTION size_t next_index(size_t i) const { return (i+1) % CAPACITY; } }; template Queue::Queue( ) { count = 0; front = 0; rear = CAPACITY - 1; } template void Queue::insert(const Item& entry) { assert(size( ) < CAPACITY); rear = next_index(rear); data[rear] = entry; count++; } template Item Queue::get_front( ) { size_t answer_index; assert(!is_empty( )); answer_index = front; front = next_index(front); count--; return data[answer_index]; }