1. 程式人生 > >C++ 迴圈佇列基本演算法實現

C++ 迴圈佇列基本演算法實現

C++ 迴圈佇列基本演算法實現

#ifndef CircleQueue_h
#define CircleQueue_h

const int QueueSize = 1000;
template <class T>
class CircleQueue
{
public:
    CircleQueue(){front = rear = 0;}
    void EnQueue(T x);
    T DeQueue();
    T GetFront();
    void SetNull();
    int GetLength();
    bool Empty(){return
front == rear ? true : false;} private: T data[QueueSize]; int front; int rear; }; template <class T> void CircleQueue<T>::EnQueue(T x){ if((rear+1)%QueueSize == front) throw "overflow"; rear = (rear + 1)%QueueSize; //隊尾指向下一個位置 data[rear] = x; } template <class T> T CircleQueue
<T>::DeQueue(){ if(front == rear) throw "the Queue is null"; front = (front+1)%QueueSize; T x = data[front]; return x; } template <class T> T CircleQueue<T>::GetFront(){ if(front == rear) throw "the Queue is null"; return data[(front +1)%QueueSize]; } template
<class T> int CircleQueue<T>::GetLength(){ return (rear-front +QueueSize)%QueueSize; } template <class T> void CircleQueue<T>::SetNull(){ rear = 0; front = 0; } #endif /* CircleQueue_h */