c++写的一个链式队列,求大神指点为什么输出的结果不对
//hpp 链式队列节点类的实现#include <iostream>
using namespace std;
template <class T>
class LinkQueueNode{
public:
//LinkQueueNode();
LinkQueueNode(T& value):data(value),Link(NULL){};
public:
T& data;
LinkQueueNode<T>* Link;
};
//hpp 链式队列的实现
#include <iostream>
#include "LinkQueueNode.h"
#include <assert.h>
using namespace std;
template <class T>
class LinkQueue{
public:
LinkQueueNode<T>* front;
LinkQueueNode<T>* tail;
public:
LinkQueue():front(NULL),tail(NULL){ };
~LinkQueue();
void push(T& element);
T& pop();
T GetTop();
bool IsEmpty();
void MakeEmpty();
};
template <class T>
LinkQueue<T>::~LinkQueue()
{}
template <class T>
void LinkQueue<T>::push(T &element)
{
LinkQueueNode<T>* add=new LinkQueueNode<T>(element);
if(tail==NULL)
{
front=tail=add;
}
else
tail->Link=add;
tail=tail->Link;
//cout<<front->data<<endl;
//cout<<tail->data<<endl;
}
//template <class T>
template <class T>
T& LinkQueue<T>::pop()
{
assert(!IsEmpty());
LinkQueueNode<T>* old=front;
T oldData=old->data;
front=front->Link;
if(tail==old)
tail=NULL;
delete old;
return oldData;
}
template <class T>
T LinkQueue<T>::GetTop()
{
assert(!IsEmpty());
return front->data;
}
template <class T>
bool LinkQueue<T>::IsEmpty()
{
return
front==NULL;
}
template <class T>
void LinkQueue<T>::MakeEmpty()
{
while(!IsEmpty())
{
pop();
}
}
//main()
#include "LinkQueue.h"
using namespace std;
void main()
{
int a=1;
int b=2;
int c=3;
LinkQueue<int> MyLinkQueue;
MyLinkQueue.push(a);
MyLinkQueue.push(b);
MyLinkQueue.push(c);
cout<<MyLinkQueue.GetTop()<<endl;
}
输出的结果不是应该是1吗,为什么会是3呢