您的位置:首页 > 产品设计 > UI/UE

使用模板类实现Queue

2011-04-13 15:59 357 查看
template<class T>
class Queue
{
public:
Queue(int MaxQueueSize=10);
~Queue(){delete [] queue;}
bool IsEmpty()const
{return front==rear;}
bool IsFull()const
{return (((rear+1)%MaxSize==front)?1:0);}
T First()const;
T Last()const;
Queue<T>& Add(const T& x);
Queue<T>& Delete(T& x);
private:
int front;
int rear;
int MaxSize;
T * queue;
};
////////////////////////////////////////////
template<class T>
Queue<T>::Queue(int MaxQueueSize)
{
MaxSize=MaxQueueSize+1;
queue=new T[MaxSize];
front=rear=0;
}
template<class T>
T Queue<T>::First() const
{
//if(IsEmpty())throw OutOfBounds();
if(IsEmpty())exit(0);
return queue[(front+1)%MaxSize];
}
template<class T>
T Queue<T>::Last() const
{
//if(IsEmpty())throw OutOfBounds();
if(IsEmpty())exit(0);
return queue[rear];
}
template<class T>
Queue<T>& Queue<T>::Add(const T &x)
{
//if(IsFull())throw NoMem();
if(IsFull())exit(0);
rear=(rear+1)%MaxSize;
queue[rear]=x;
return *this;
}
template<class T>
Queue<T>& Queue<T>::Delete(T &x)
{
if(IsEmpty())throw OutOfBounds();
front=(front+1)%MaxSize;
x=queue[front];
return *this;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: