己写的Queue类循环的,push()函数有点有关问题
己写的Queue类循环的,push()函数有点问题
#include <iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node <T> *next;
};
template <class T>
class Queue
{
public:
Queue(){rear = NULL;};
Queue(Queue &x);
~Queue();
bool empty(){return rear == NULL;};
T Front();
T Top();
void push(const T x);
void pop();
void operator = (Queue &x);
private:
Node <T> *rear;
};
template <class T>
Queue <T> ::Queue(Queue &x)
{
while(!x.empty())
{
push(x.Front());
x.pop();
}
}
template <class T>
Queue <T> ::~Queue()
{
while(!empty())
{
pop();
}
}
template <class T>
void Queue <T> ::operator =(Queue &x)
{
while(!x.empty())
{
push(x.Front());
x.pop();
}
}
template <class T>
void Queue <T> ::push(const T x)
{
Node <T> *p = new Node <T> ;
p-> data = x;
p-> next = NULL;
if(!empty())
{
p-> next = rear-> next;
rear-> next = p;
rear = p;
}
else
{
rear = p;
rear-> next = rear;
}
}
template <class T>
void Queue <T> ::pop()
{
if(!empty())
{
Node <T> *p;
#include <iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node <T> *next;
};
template <class T>
class Queue
{
public:
Queue(){rear = NULL;};
Queue(Queue &x);
~Queue();
bool empty(){return rear == NULL;};
T Front();
T Top();
void push(const T x);
void pop();
void operator = (Queue &x);
private:
Node <T> *rear;
};
template <class T>
Queue <T> ::Queue(Queue &x)
{
while(!x.empty())
{
push(x.Front());
x.pop();
}
}
template <class T>
Queue <T> ::~Queue()
{
while(!empty())
{
pop();
}
}
template <class T>
void Queue <T> ::operator =(Queue &x)
{
while(!x.empty())
{
push(x.Front());
x.pop();
}
}
template <class T>
void Queue <T> ::push(const T x)
{
Node <T> *p = new Node <T> ;
p-> data = x;
p-> next = NULL;
if(!empty())
{
p-> next = rear-> next;
rear-> next = p;
rear = p;
}
else
{
rear = p;
rear-> next = rear;
}
}
template <class T>
void Queue <T> ::pop()
{
if(!empty())
{
Node <T> *p;