#include<iostream>
using namespace std;
template<class T>
struct Node
{
Node<T>* next;
T data;
};
template<class T>
class linkqueue
{
private:
Node<T>* front;
Node<T>* current;
Node<T>* rear;
Node<T>* s;
T x;
T frontdata;
Node<T>* p;
public:
linkqueue();
~linkqueue();
void enqueue(T x);
T dequeue();
T getqueue();
void makeEmpty();
bool empty();
};
template<class T>
linkqueue<T>::~linkqueue()
{
makeEmpty();
}
template<class T>
T linkqueue<T>::getqueue()
{
if (front == NULL)
{
cout << "队列中没有元素" << endl;
}
else
{
frontdata = front->data;
return frontdata;
}
}
template<class T>
T linkqueue<T>::dequeue()
{
if (rear == front)
{
cerr << "下溢";exit(1);
}
p = front->next;
x = p->data;
front->next = p->next;
if (p->next == NULL)
rear = front;
delete p;
cout << "出队成功!" << endl;
return x;
}
template<class T>
linkqueue<T>::linkqueue()
{
s = new Node<T>;
s->next = NULL;
front = rear = s;
}
template<class T>
void linkqueue<T>::enqueue(T x)
{
s = new Node<T>;
s->data = x;
s->next = NULL;
rear->next = s;
rear = s;
cout << x << "入队成功" << endl;
}
template <class T>
void linkqueue<T>::makeEmpty()
{
Node<T>* deleteNode, * current = front;
while (current)
{
deleteNode = current;
current = current->next;
delete deleteNode;
}
front = rear = NULL;
}
template<class T>
bool linkqueue<T>::empty()
{
if (front == NULL)
return true;
}
int main()
{
linkqueue<int>zz;
zz.enqueue(1);
zz.enqueue(2);
zz.enqueue(5);
zz.enqueue(8);
zz.enqueue(0);
cout << "将队头元素出队" << endl;
zz.dequeue();
cout << "取链队列的队头元素" << endl;
int a = zz.getqueue();
cout << a << endl;
cout << "销毁链队列!" << endl;
zz.~linkqueue();
cout << "判断链队列是否为空" << endl;
if (zz.empty())
{
cout << "链队列为空" << endl;
}
else
{
cout << "链队列不为空" << endl;
}
}
为什么这里返回队头元素是一些看不懂的数字 这里不是已经返回data的值了吗
using namespace std;
template<class T>
struct Node
{
Node<T>* next;
T data;
};
template<class T>
class linkqueue
{
private:
Node<T>* front;
Node<T>* current;
Node<T>* rear;
Node<T>* s;
T x;
T frontdata;
Node<T>* p;
public:
linkqueue();
~linkqueue();
void enqueue(T x);
T dequeue();
T getqueue();
void makeEmpty();
bool empty();
};
template<class T>
linkqueue<T>::~linkqueue()
{
makeEmpty();
}
template<class T>
T linkqueue<T>::getqueue()
{
if (front == NULL)
{
cout << "队列中没有元素" << endl;
}
else
{
frontdata = front->data;
return frontdata;
}
}
template<class T>
T linkqueue<T>::dequeue()
{
if (rear == front)
{
cerr << "下溢";exit(1);
}
p = front->next;
x = p->data;
front->next = p->next;
if (p->next == NULL)
rear = front;
delete p;
cout << "出队成功!" << endl;
return x;
}
template<class T>
linkqueue<T>::linkqueue()
{
s = new Node<T>;
s->next = NULL;
front = rear = s;
}
template<class T>
void linkqueue<T>::enqueue(T x)
{
s = new Node<T>;
s->data = x;
s->next = NULL;
rear->next = s;
rear = s;
cout << x << "入队成功" << endl;
}
template <class T>
void linkqueue<T>::makeEmpty()
{
Node<T>* deleteNode, * current = front;
while (current)
{
deleteNode = current;
current = current->next;
delete deleteNode;
}
front = rear = NULL;
}
template<class T>
bool linkqueue<T>::empty()
{
if (front == NULL)
return true;
}
int main()
{
linkqueue<int>zz;
zz.enqueue(1);
zz.enqueue(2);
zz.enqueue(5);
zz.enqueue(8);
zz.enqueue(0);
cout << "将队头元素出队" << endl;
zz.dequeue();
cout << "取链队列的队头元素" << endl;
int a = zz.getqueue();
cout << a << endl;
cout << "销毁链队列!" << endl;
zz.~linkqueue();
cout << "判断链队列是否为空" << endl;
if (zz.empty())
{
cout << "链队列为空" << endl;
}
else
{
cout << "链队列不为空" << endl;
}
}
为什么这里返回队头元素是一些看不懂的数字 这里不是已经返回data的值了吗

