#include #include #include "dsexceptions.h" using namespace std; template class Queue { public: bool isEmpty( ) const; const Object & getFront( ) const; void makeEmpty( ); Object dequeue( ); void enqueue( const Object & x ); private: list theList; }; template bool Queue::isEmpty( ) const { return theList.empty( ); } template const Object & Queue::getFront( ) const { if( isEmpty( ) ) throw Underflow( ); return theList.front( ); } template void Queue::makeEmpty( ) { while( !isEmpty( ) ) dequeue( ); } template Object Queue::dequeue( ) { Object frontItem = getFront( ); theList.pop_front( ); return frontItem; } template void Queue::enqueue( const Object & x ) { theList.push_back( x ); } int main( ) { Queue q; for( int j = 0; j < 5; j++ ) { for( int i = 0; i < 5; i++ ) q.enqueue( i ); while( !q.isEmpty( ) ) cout << q.dequeue( ) << endl; } return 0; }