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;
}
中间那两行怎么错了 求大神讲解 展开
#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;
}
中间那两行怎么错了 求大神讲解 展开
1个回答
展开全部
p=Q.front->next ;printf("0000\n");
Q.front->next 是NULL
e=p->data ; 所以,这里取data会出现程序异常!!!!!
printf("1111\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; //这之后,没有地方给它赋值啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询