//-------------------------------------------------------------------- // // Laboratory 6 queuelnk.h // // Class declarations for the linked list implementation of the // Queue ADT // //-------------------------------------------------------------------- template < class DT > // Forward declaration of the Stack class class Queue; template < class DT > class QueueNode // Facilitator class for the Queue class { private: // Constructor QueueNode ( const DT &nodeData, QueueNode *nextPtr ); // Data members DT dataItem; // Queue data item QueueNode *next; // Pointer to the next element friend class Queue
; }; //-------------------------------------------------------------------- template < class DT > class Queue { public: // Constructor Queue ( int ignored = 0 ); // Destructor ~Queue (); // Queue manipulation operations void enqueue ( const DT &newData ) // Enqueue data element throw ( logic_error ); DT dequeue () // Dequeue data element throw ( logic_error ); void clear (); // Clear queue // Queue status operations bool isEmpty () const; // Queue is empty bool isFull () const; // Queue is full // Output the queue structure -- used in testing/debugging void showStructure () const; private: // Data members QueueNode
*front, // Pointer to the front node *rear; // Pointer to the rear node };