学习数据结构C++版遇到的问题,Segmentation fault:11?
这是代码
在输入数据的时候 会崩溃
#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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
同学,你给s赋了NULL,怎么又取s的内容啊,s指向的是NULL啊