这是代码
在输入数据的时候 会崩溃
#include <iostream>
using namespace std;
template <class DataType>
struct Node
{
DataType data;
Node<DataType> *next;
};
template <class DataType>
class LinkQueue
{
public:
LinkQueue();
~LinkQueue();
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty(){return front==rear?1:0;}
private:
Node<DataType> *front,*rear;
};
template <class DataType>
LinkQueue<DataType>::LinkQueue()
{
Node<DataType> *s;
s=new Node<DataType>;
s->next=NULL;
front=rear=s;
}
template <class DataType>
LinkQueue<DataType>::~LinkQueue()
{
while (front!=NULL)
{
Node<DataType> *q;
q=front;
front=front->next;
delete q;
}
}
template <class DataType>
void LinkQueue<DataType>::EnQueue(DataType x)
{
Node<DataType> *s=NULL;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
// cout<<"对"<<x<<"执行入队操作"<<endl;
}
template <class DataType>
DataType LinkQueue<DataType>::DeQueue()
{
if (rear==front)
{
throw "下溢";
}
Node<DataType> *p;
p=front->next;
DataType x=p->data;
front->next=p->next;
if (p->next==NULL)
{
rear=front;
}
delete p;
cout<<"执行出队操作"<<endl;
return x;
}
template <class DataType>
DataType LinkQueue<DataType>::GetQueue()
{
cout<<"查看队头元素:"<<front->next->data;
return front->next->data;
}
int main() {
LinkQueue<int> linkQ;
int a=0;
cin>>a;
while(a)
{
if (linkQ.Empty())
{
cout<<"队空,";
linkQ.EnQueue(a);
linkQ.GetQueue();
} else {
linkQ.EnQueue(a);
linkQ.GetQueue();
linkQ.DeQueue();
linkQ.GetQueue();
}
cin>>a;
}
return 0;
}
基本上是照着书敲的,改了一些地方,都是类似书上原来的入队是这样的:
template <class DataType>
void LinkQueue<DataType>::EnQueue(DataType x)
{
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
PHPz2017-04-17 13:42:52
void LinkQueue<DataType>::EnQueue(DataType x)
{
Node<DataType> *s=NULL;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
// cout<<"对"<<x<<"执行入队操作"<<endl;
}
Classmate, you assigned NULL to s, why do you get the content of s again? s points to NULL