C语言数据结构 链队列

#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineOK1#defineERROR0#defineOV... #include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define null 0
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
LinkQueue Q;
int InitQueue()
{
Q.front = (QueuePtr)malloc(sizeof(QNode));
Q.rear = Q.front;
if(!Q.front)
return (OVERFLOW);
Q.front->next = null;
return OK;
}
int EnQueue(int e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
return (OVERFLOW);
p->data=e;
p->next=null;
Q.rear=p;
printf("enter %d\n",e);
return OK;
}
void DeQueue()
{
int e;
QueuePtr p;
if(Q.front==Q.rear)
exit(0);
p=Q.front->next ;printf("0000\n");
e=p->data ;printf("1111\n");//这行和下一行为什么不执行哪里错了
Q.front->next=p->next;printf("2222\n");
if(Q.rear==p)
Q.rear = Q.front;
printf("delete %d\n",e);
free(p);
}
int main()
{int i,e;
InitQueue();printf("000\n");
for(i=0;i<5;i++)
{
EnQueue(i);
}
int a;
scanf("%d",&e);
EnQueue(e);printf("111\n");
DeQueue(e);
printf("111\n");
return 0;
}

中间那两行怎么错了 求大神讲解
展开
 我来答
kaixingui2012
2015-11-12 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6400万
展开全部
p=Q.front->next ;printf("0000\n");
Q.front->next 是NULL
e=p->data ; 所以,这里取data会出现程序异常!!!!!
printf("1111\n");//所以,这里就不会出现了!
追问
Q.front->next  怎么是NULL 不是第一个结点的意思么
追答
Q.front = (QueuePtr)malloc(sizeof(QNode));
Q.rear = Q.front;
if(!Q.front)
return (OVERFLOW);
Q.front->next = null; //这之后,没有地方给它赋值啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式