按照书上写了差不多的例子,程序一写发现好多语法问题,需要继续学习。
#include <iostream>
using namespace std;
template<class T> class queue;
template<class T> class item
{
friend class queue<T>;
private:
item(const T& val):value(val),next(0){} //带有一个参数的构造函数
item* next;
T value;
};
template<class T> class queue
{
public:
queue():head(0),tail(0){}
queue(const queue& q):head(0),tail(0)
{
copy_elems(q);
}
queue& operator=(const queue&);
~queue()
{
destroy();
}
const T& front(){ return head->value; }//将头部对象返回
void push(const T& t); //将对象加到尾部
void pop();//将对象从头部移除
bool empty() const { return head == 0; }
private:
item<T>* head;
item<T>* tail;
void copy_elems(const queue& q);
void destroy();
};
template<class T> void queue<T>::push(const T& t)
{
item<T>* tmp =new item<T>(t);
if(empty())
{
head = tail = tmp;