程序没有报错,但是不能输入数据,程序直接结束了运行。
//循环队列
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MaxSize 10
typedef struct SqQueue
{
int *base;
int front;
int rear;
}*SqQueue;
void InitQueue(SqQueue Q)
{
Q->base = (int*)malloc(MaxSize*sizeof(int));
Q->front = Q->rear = 0;
}
int EnQueue(SqQueue Q,int e)
{
if((Q->rear+1)%MaxSize == Q->front)
{
printf("位置已满\n");
return 0;
}
Q->base[Q->rear] = e;
Q->rear = (Q->rear+1)%MaxSize;
return 0;
}
int DeleteQueue(SqQueue Q)
{
int e;
if(Q->front==Q->rear) return 0;
e = Q->base[Q->front];
Q->front = (Q->front+1)%MaxSize;
return e;
}
void Print(SqQueue Q)
{
int i;
while(Q->front % MaxSize != (Q->rear+1) % MaxSize )
{
printf("%d\n",Q->base[Q->front]);
Q->front = (Q->front+1)%MaxSize;
}
}
int LengthQueue(SqQueue Q)
{
return Q->rear- Q->front;
}
int main()
{
SqQueue Q;
int e,length;
InitQueue(Q);
scanf("%d",&e);
EnQueue(Q,e);
length = LengthQueue(Q);
Print(Q);
e=DeleteQueue(Q);
printf("e = %d",e);
return 0;
}