为什么没有输出结果,关于模板.请大家帮忙.急.
//程序大体是这样一个queuenode类一个queue类.
//我的目的是建立一个队列然后输出结果. 可是没有结果请大家看看.
//queuenode.h
#ifndef QUEUENODE_H
#define QUEUENODE_H
template <class T>
class Queue;
template <class T>
class QueueNode
{
friend class Queue<T>;
public:
QueueNode(T d=0, QueueNode<T> *l=NULL );
private:
T data;
QueueNode<T> *next;
};
template <class T>
QueueNode<T>::QueueNode(T d, QueueNode<T> *l):data(d),next(l)
{
}
#endif
//下面类queue的定义.
//queue.h
#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>
#include "queuenode.h"
using namespace std;
template <class T>
class Queue
{
public:
Queue();//构造函数,建立空队列.
~Queue();//析构函数
void EnQueue(const T& item);//将item入队
int DeQueue();//删除队头元素并返回1,否则返回0
T GetFront();//查看队头元素的值
void MakeEmpty();//清空队列,实现与~Queue()相同
int IsEmpty() const;//判队列空否
void PrintQueue(Queue<T>* p);
private:
QueueNode<T> *front, *rear;
};
template <class T>
Queue<T>::Queue():front(NULL),rear(NULL)
{
}
template <class T>
Queue<T>::~Queue()
{
QueueNode<T> *p;
while (front != NULL)
{
p=front;
front=front->next;
delete p;
}
}
template <class T>
void Queue<T>::EnQueue(const T &item)
{
QueueNode<T> *newNode;
newNode=new QueueNode<T>(item,NULL);
if (front == NULL)
{
front=rear=newNode;
}
else
{
rear=rear->next;
rear=newNode;
}
}
template <class T>
int Queue<T>::DeQueue()
{
if (IsEmpty())
{
return 0;
}
QueueNode<T> *p=front;
front=front->next;
delete p;
return 1;
}
template <class T>
T Queue<T>::GetFront()
{
if (IsEmpty())
{
return NULL;
}
return front->data;
}
template <class T>
void Queue<T>::MakeEmpty()
{
QueueNode *p;
while (front != NULL)
{
p=front;
front=front->next;
delete p;
}
}
template <class T>
int Queue<T>::IsEmpty() const
{
return front==NULL;
}
template <class T>
void Queue<T>::PrintQueue( Queue<T>* p)
{
//这个函数有问题注了的只能输出一个数下面的却没有输出.请大家帮忙看看这两种方法为//什么会出错.
// while (p->front != NULL)
// {
// cout << (p->front)->data << " ";
// p->front=(p->front)->next;
// }
while (p->IsEmpty())
{
cout << p->GetFront() << " ";
p->front=(p->front)->next;
}
}
#endif
//下面是主程序.
//queuetest.cpp
#include <iostream>
#include "queue.h"
using namespace std;
int main()
{
Queue<int> *qint=new Queue<int>;
for (int i=1; i<10; i=i+2)
{
qint->EnQueue(i);
}
qint->PrintQueue(qint);
return 0;
}