只实现了主要函数
#include<iostream>
#include<assert.h>
using namespace std;
template <class T>
class Queue;
template <class T>
class node
{
friend class Queue<T>;
private:
T data;
node<T> *link;
public:
node(T d,node<T> *l=NULL):data(d),link(l){}
};
template<class T>
class Queue
{
private:
node<T> *front ,*rear;
public:
Queue(){front=rear=NULL;}
void EnQue(const T& x)
{
if(front==NULL)
front=rear=new node<T>(x);
else
rear=rear->link=new node<T>(x);
}
T DelQue()
{
assert(!isempty());
node<T>* p=front;
T q=front->data;
front=front->link;
if(front==NULL)rear=front;
delete p;
return q;
}
int isempty()
{
return front==NULL;
}
~Queue()
{
node<T> *p;
while(front!=NULL)
{p=front;
front=front->link;
delete p;
}
}
};
void main()
{
Queue<int> q;
q.EnQue(1);
q.EnQue(2);
cout<<q.isempty();
cout<<q.DelQue();
cout<<q.DelQue();
cout<<q.isempty();
}