/* File: sm_queue.H Copyright glh 7/20/93 */ #ifndef SMQUEUEH #define SMQUEUEH #include #include #include typedef enum {false, true} Boolean; typedef enum {enque, deque} op_type; template class SmQueue { protected: int head, tail, size; op_type last_op; T* element; public: SmQueue(int sz, const T& elm); SmQueue(int sz); SmQueue(const SmQueue& que); SmQueue() {} inline ~SmQueue(); SmQueue& operator=(const SmQueue&); void Enqueue(const T& elm); T& Dequeue(); Boolean Empty() const; inline void MakeEmpty(); friend ostream& operator<<(ostream& os, const SmQueue& que); }; template inline SmQueue::~SmQueue() {delete [] element;} template inline void SmQueue::MakeEmpty() {head=0; tail=size-1; last_op=deque;} #endif