#ifndef PRACTICE1_H_INCLUDED#define PRACTICE1_H_INCLUDED#includetemplate class Queue{public: Queue();//构造函数 ~Queue();//析构函数 bool isEmpty() const;//判断是否为空 const T& getFront() const;//得到队首数据不删除 void enqueue(const T& x);//进队列 T dequeue();//删除队首数据 且得到队首数据 void makeEmpty();//清空队列private: struct ListNode//结构体嵌套 也可以用友元类 { T element;//数据域 ListNode *next;//指针域 ListNode(const T & theElement,ListNode *n=0)//构造函数 :element(theElement),next(n) {} }; ListNode *front;//对头指针 ListNode *back;//队尾指针};template Queue ::Queue(){ front=0; back=0;}template Queue ::~Queue(){ makeEmpty();}template void Queue ::makeEmpty(){ while(!isEmpty()) dequeue();}template bool Queue ::isEmpty()const{ return front==0;}template const T& Queue ::getFront() const{ if(isEmpty()) { throw "queue is empty"; } return front->element;}template void Queue ::enqueue(const T & x){ if(isEmpty()) back=front=new ListNode(x); else back=back->next=new ListNode(x);}template T Queue ::dequeue(){ T frontItem=getFront(); ListNode *old=front; front=front->next; delete old; std::cout< <