请教小弟我这段程序为什么会崩溃掉
请问我这段程序为什么会崩溃掉?
#include <iostream>
using namespace std;
class queue
{
private:
struct node{int m;struct node *next;};
enum{q_size=10};
node * front;
node * rear;
int items;
const int qsize;
public:
void get()
{
cout<<"现在有元素"<<items<<endl;
}
~queue()
{
node * temp;
while (front !=NULL)
{
temp = front;
front = front->next;
delete temp;
}
}
queue(int qs):qsize(qs)
{
front =rear =NULL;
items =0;
}
// 入队
bool enqueue(const int & m)
{
if(isfull())
return false;
node * add=new node;
if(add==NULL)
return false;
add->m=m;
items++;
if(front==NULL)
front=add;
else
rear =add;
return true;
}
bool dequeue(int m)
{
if(front==NULL)
return false;
m=front->m;
items--;
node * temp=front;
front=front->next;
delete temp;
if(items==0)
rear=NULL;
return true;
}
//.............................................
bool isfull()
{
return items==qsize;
}
bool isempty()
{
return items==0;
}
};
int main()
{
queue a(4);
a.enqueue(33);
a.enqueue(22);
a.get();
return 0;
}
------解决方案--------------------
你的next没有初始化
#include <iostream>
using namespace std;
class queue
{
private:
struct node{int m;struct node *next;};
enum{q_size=10};
node * front;
node * rear;
int items;
const int qsize;
public:
void get()
{
cout<<"现在有元素"<<items<<endl;
}
~queue()
{
node * temp;
while (front !=NULL)
{
temp = front;
front = front->next;
delete temp;
}
}
queue(int qs):qsize(qs)
{
front =rear =NULL;
items =0;
}
// 入队
bool enqueue(const int & m)
{
if(isfull())
return false;
node * add=new node;
if(add==NULL)
return false;
add->m=m;
items++;
if(front==NULL)
front=add;
else
rear =add;
return true;
}
bool dequeue(int m)
{
if(front==NULL)
return false;
m=front->m;
items--;
node * temp=front;
front=front->next;
delete temp;
if(items==0)
rear=NULL;
return true;
}
//.............................................
bool isfull()
{
return items==qsize;
}
bool isempty()
{
return items==0;
}
};
int main()
{
queue a(4);
a.enqueue(33);
a.enqueue(22);
a.get();
return 0;
}
------解决方案--------------------
你的next没有初始化