【实现类】
const int MAXSIZE=100;
template<class T>
class cirQueue{
public:
cirQueue();
~cirQueue();
void push(T x);//入队
T pop();//出队
bool empty();//判断队列是否为空
T getFront();//获取队首元素
int length();//获取队列长度
private:
T data[MAXSIZE];
int head,tail;
};
【入队】
template <class T>
void cirQueue<T>::push(T x){//入队
if((tail+1)%MAXSIZE==head)
throw "上溢";
tail=(tail+1)%MAXSIZE;
data[tail]=x;
}
【出队】
template <class T>
T cirQueue<T>::pop(){//出队
if(head==tail)
throw "下溢";
head=(head+1)%MAXSIZE;
return data[head];
}
【判断是否为空】
template<class T>
bool cirQueue<T>::empty(){//判断队列是否为空
if(head==tail)
return true;
return false;
}
【获取队首元素】
template<class T>
T cirQueue<T>::getFront(){//获取队首元素
if(head==tail)
throw "下溢";
int pos=(head+1)%MAXSIZE;
return data[pos];
}
【获取队列长度】
template<class T>
int cirQueue<T>::length(){//获取队列长度
if(head==tail)
throw "下溢";
int len=(tail-head+MAXSIZE)%MAXSIZE;
return len;
}