∥/顺序循环队列的模板类接口定义以及基本运算的实现代码 #includesiostream. h> enum Error code success, overflow, underflow can land, can depart, fail y const int maxqueue =10; //small value for testing template <class Queue entry> class Queue i public: Queue() bool empty const return count==0; I Error code serve Error code append(const Queue entry &item) Error code retrieve(Queue entry &item )const
//顺序循环队列的模板类接口定义以及基本运算的实现代码 #include<iostream.h> enum Error_code{ success, overflow, underflow, can_land, can_depart, fail }; const int maxqueue = 10; // small value for testing template <class Queue_entry> class Queue { public: Queue( ); bool empty( ) const { return count==0; } Error_code serve( ); Error_code append(const Queue_entry &item); Error_code retrieve(Queue_entry &item) const;
protected Int count int front rear Queue entryentry[maxqueue]; friend class runway; };∥/结束类 Queue声明 template <class Queue entry> Queue<Queue entry>:: Queue) //Post: The Queue is initialized to be empty i count=0; rear=maxqueue-1; front=0; I
protected: int count; int front, rear; Queue_entry entry[maxqueue]; friend class Runway; }; // 结束类Queue声明 template <class Queue_entry> Queue<Queue_entry>::Queue( ) // Post: The Queue is initialized to be empty. { count=0; rear=maxqueue-1; front=0; }
template <class Queue entry> Error code Queue<Queue entry> :append(const Queue entry &item //Post: item is added to the rear of the Queue. If the Queue is full return an overflow and leave the queue unchanged. i if (count>=maxqueue) return overflow count + rear =((rear+1)==maxqueue)?0: (rear+1); entry[rear]=item; return success
template <class Queue_entry> Error_code Queue<Queue_entry>::append(const Queue_entry &item) // Post: item is added to the rear of the Queue . If the Queue is // full return an overflow and leave the Queue unchanged. { if (count>=maxqueue) return overflow; count ++; rear = ((rear+1) == maxqueue) ? 0: (rear+1); entry[rear]=item; return success; }
template <class Queue entry> Error code Queue<Queue entry> serve() //Post: The front of the Queue is removed. If the Queue is // / empty return an underflow i if (count<=O) return underflow count- front=((front+1)==maxqueue)? 0: (front+1); return success
template <class Queue_entry> Error_code Queue<Queue_entry>::serve( ) // Post: The front of the Queue is removed. If the Queue is // // empty return an underflow { if (count<=0) return underflow; count--; front = ((front+1) == maxqueue) ? 0: (front+1); return success; }
template <class Queue entry> Error code Queue <Queue entry>: retrieve Queue entry &item)const // Post: The front of the Queue retrieved to the output /1 parameteritem. If the Queue is empty return / an Error code of underflow if(count<=O) return underflow item =entrylfront] return success
template <class Queue_entry> Error_code Queue <Queue_entry>::retrieve(Queue_entry &item) const // Post: The front of the Queue retrieved to the output // parameteritem . If the Queue is empty return // an Error_code of underflow. { if(count<=0) return underflow; item = entry[front]; return success; }