完整代码如下
#include<iostream>
using namespace std;
template <typename T>
class Queue
{
public:
struct Node
{
T id;
Node* pNext;
};
Node*pHead;
Node*pEnd;
Node*pTemp;
int Lenth;
public:
Queue();
~Queue();
void Push(T x);
void Pop();
void Show();
};
template <typename T>
Queue<T>::Queue()
{
pHead=NULL;
pEnd=NULL;
Lenth = 0;
}
template <typename T>
Queue<T>::~Queue()
{
pHead = NULL;
pEnd = NULL;
Lenth = 0;
if (pTemp != NULL)
{
delete pTemp;
pTemp = NULL;
}
}
template <typename T>
void Queue<T>::Push(T x)
{
pTemp = new Node;
pTemp->pNext = NULL;
pTemp->id = x;
if (pHead == NULL)
{
pHead=pTemp;
}
else
{
pEnd->pNext = pTemp;
}
pEnd = pTemp;
Lenth++;
}
template <typename T>
void Queue<T >::Pop()
{
if (pHead == NULL)
{
cout << "队列中没有元素了" << endl;
return;
}
Node* pDel = pHead;
//cout << pDel->id << endl;
pHead = pHead->pNext;
delete pDel;
pDel = NULL;
Lenth--;
}
template <typename T>
void Queue<T>::Show()
{
while (pHead)
{
cout << pHead->id << endl;
pHead = pHead->pNext;
}
}
int main()
{
/*Queue<int>qu;
qu.Push(1);
qu.Push(2);
qu.Pop();
qu.Push(3);
qu.Show();*/
Queue<string>qu1;
qu1.Push("111");
qu1.Push("222");
qu1.Pop();
qu1.Push("liu");
qu1.Show();
return 0;
}