c语言 我创建的队列遇到问题 可以编译 执行时候报错 求解
发布网友
发布时间:2022-05-06 18:05
我来回答
共2个回答
热心网友
时间:2022-07-01 16:37
//错误不是很多,我帮你改了一下,你对照一下,可以运行,你很多概念还没弄懂,估计这代码也是根据书上敲上去的,你现在主要是消化,错误点#define 后面不要加; ,还有就是引用
#include<iostream>
#define OK 1
#define ERROR -1
#define OVERFLOW 1
using namespace std;
typedef char QElemType;
typedef int Status;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q){
Q.front=Q.rear =(QueuePtr)malloc(sizeof(QNode));
Q.rear->next=NULL;
Q.front->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e){
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)exit(OVERFLOW);
p->data =e;
p->next =NULL;
Q.rear->next=p;
Q.rear =p;
return OK;
}
Status DeQueue(LinkQueue &Q,QElemType&e){
QueuePtr p;
if(Q.front ==Q.rear ) return ERROR;
p=Q.front ->next ;
e=p->data ;
Q.front ->next =p->next ;
if(Q.rear ==p)Q.rear =Q.front ;
free(p);
return OK;
}
void main()
{
LinkQueue test;
char input;
int flag=1;
cout<<"请将数据输入进队列\n";
InitQueue(test);
while(flag==1){
input=getchar();
if(input=='\n') flag=0;
else EnQueue(test,input);
}
cout<<"队列中的数据为\n";
while(test.front !=test.rear ){
DeQueue(test,input);
cout<<input;
}
}
热心网友
时间:2022-07-01 16:38
把错误截图也发过来吧 不然这么看太费时间了 猜想是你的函数入口出问题了 检查下函数的声明 和 定义的名称是否一样