#include
#include
using namespace std;
template
struct Node{
T data;
Node*prior;
Node*next;
};
template
class list{
public:
Node*head;
Node*tail;
list()
{
head=tail=NULL;
}
virtual void store(T i)=0;
virtual T retrieve()=0;
};
template
class queue:public list{
public:
void store(T i);
T retrieve();
};
template
void queue::store(T i)
{
Node*item;
item=new Node;
if(!item)
{
cout<<"error"<
}
item->data=i;
if(!head)
{
item->prior=head;
head=tail=item;
item->next=NULL;
}
item->prior=tail;
tail->next=item;
tail=item;
item->next=NULL;
}
template
T queue::retrieve()
{
T temp;
Node*p;
if(!head)
{
cout<<"队列已空"<
}
temp=head->data;
p=head;
head=head->next;
head->prior=NULL;
delete p;
return temp;
}
template
class stack:public list{
public:
void store(T i);
T retrieve();
};
template
void stack::store(T i)
{
Node*item;
item=new Node;
if(!item)
{
cout<<"error"<
}
item->data=i;
if(!head)
{
item->prior=head;
head=tail=item;
item->next=NULL;
}
item->prior=tail;
tail->next=item;
tail=item;
item->next=NULL;
}
template
T stack::retrieve()
{
T temp;
Node*p;
if(!tail)
{
cout<<"队列已空"<
}
temp=tail->data;
p=tail;
tail=tail->prior;
tail->next=NULL;
delete p;0
}