您的位置:首页 > 其它

一个功能简单的队列模板

2012-11-10 21:50 369 查看
这个代码写的时间比较短,也就是半个小时,测试的也不多,但是有一定的参考价值。

#include <iostream>

using namespace std;
template<class T>
class Queue
{
private:
T *queuehead;
int maxsize;
int front;
int rear;
public:
Queue(int max=10);
~Queue();
bool Isempty();
bool Isfull();
bool addin(T & add);
bool pop(T & out);
void show();
};
template<class T>
Queue<T>::Queue(int max)
{
if(max>0)
maxsize=max;
else
maxsize=10;
queuehead=new T [max];
if(queuehead==NULL)
abort();
front=0;
rear=0;
}
template<class T>
Queue<T>::~Queue()
{
delete [] queuehead;
}
template<class T>
bool Queue<T>::Isempty()
{
if(front==rear)
return true;
else
return false;
}
template<class T>
bool Queue<T>::Isfull()
{
if((rear+1)%maxsize==front)
return true;
else
return false;
}
template<class T>
bool Queue<T>::addin(T & add)
{
if(!Isfull())
{
queuehead[rear%=maxsize]=add;
rear++;
return true;
}
else
return false;
}
template<class T>
bool Queue<T>::pop(T & out)
{
if(!Isempty())
{
out=queuehead[front%=maxsize];
front++;
return true;
}
else
return false;
}
template<class T>
void Queue<T>::show()
{
cout<<"Data in line:\n";
for(int i=0;i<maxsize;i++)
cout<<queuehead[i]<<ends;
cout<<endl;
cout<<"rear:"<<rear<<endl;
cout<<"front:"<<front<<endl;
}
int main()
{
cout << "Hello world!" << endl;
int a;
Queue<int> temp1;
cin>>a;
while(!cin.fail())
{
temp1.addin(a);
cin>>a;
}
while(!temp1.Isempty())
{
temp1.pop(a);
cout<<a<<ends;
}
cout<<endl;
temp1.show();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: