//--------------------------------------------------------------------
//
// 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
};