64,652
社区成员
发帖
与我相关
我的任务
分享
//编译和连接能通过,但运行时候提示内存错误!大家帮忙看看吧!
//哪有问题呢?大家提提意见吧!
#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct node
{
int data;
struct node *next;
}Qnode;
class Queue
{
public:
Queue();
void InitQueue();
void show()const;
void EnQueue(int e);
void DeQueue(int &e);
~Queue();
private:
Qnode *rear;
Qnode *front;
};
Queue::Queue()
{
front=new node;
rear=front;
front->next=NULL;
}
void Queue::InitQueue()
{
Qnode *p2=new node;
int i=0;
cout<<"请输入数值(-1 退出): ";
cin>>p2->data;
while (p2->data!=-1)
{
++i;
if(i==1)
{
front->next=p2; //队首指针指向队首
rear->next=p2;
rear=p2;
}
else
{
rear->next=p2;
rear=p2;
}
p2=new node;
cin>>p2->data;
}
rear->next=NULL;
}
void Queue::show() const
{
if(front==rear)
cout<<"此队为空队!"<<endl;
else
{
node *p=front->next;
cout<<"顺序的队值为: "<<endl;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
void Queue::EnQueue(int e) //入队
{
node *p=new node;
p->data=e;
p->next-=NULL;
rear->next=p;
rear=p;
}
void Queue::DeQueue(int &e) //从队首删除一个元素
{
if (front==rear)
cout<<"此队为空队!"<<endl;
else
{
node *p=front->next;
e=p->data;
front->next=p->next;
if(rear==p)
rear=front;
delete p;
}
}
Queue::~Queue()
{
while(front)
{
rear=front->next;
delete front;
front=rear;
}
}
int main ()
{
Queue Q;
int e;
Q.InitQueue();
cout<<"请输入要进队数值:"<<endl;
cin>>e;
Q.EnQueue(e);
Q.DeQueue(e);
cout<<"出队数值: "<<e<<endl;
Q.show();
cout<<endl;
return 0;
}
void Queue::InitQueue()
{
Qnode *p2=new node;
int i=0;
cout<<"请输入数值(-1 退出): ";
cin>>p2->data;
while (p2->data!=-1)
{
++i;
if(i==1)
{
front->next=p2; //队首指针指向队首
rear->next=p2;
rear=p2;
}
else
{
rear->next=p2;
rear=p2;
}
p2=new node;
cin>>p2->data;
}
rear->next=NULL;
}
void Queue::EnQueue(int e) //入队
{
node *p=new node;
p->data=e;
p->next-=NULL;<===多了个减号吧
rear->next=p;
rear=p;
}
void Queue::EnQueue(int e) //入队
{
node *p=new node;
p->data=e;
p->next=NULL;
rear->next=p;
rear=p;
}