小白求问,
程序有问题,测试发现在 Q.pBase[Q.rear]=e;这一条语句执行的时候出错。百思不得其解呀....
typedef struct queue
{
int *pBase;
int front; //指向队列第一个元素
int rear; //指向队列最后一个元素的下一个元素
int maxsize; //循环队列的最大存储空间
}Queue;
void InitQueue(Queue Q,int maxsize)
{
Q.pBase=(int *)malloc(sizeof(int)*maxsize);
if(NULL==Q.pBase)
{
printf("Memory allocation failure");
exit(-1); //退出程序
}
Q.front=0; //初始化参数
Q.rear=0;
Q.maxsize=maxsize;
}
int Enqueue(Queue Q, int e)
{
if(QueueFull(Q))
return 0;
else
{
Q.pBase[Q.rear]=e;
Q.rear=(Q.rear+1)%Q.maxsize;
return 1;
}
}
int QueueFull(Queue Q)
{
if(Q.front==(Q.rear+1)%Q.maxsize)
return 1;
else
return 0;
}
int main()
{
Queue Open;
InitQueue(Open,10);
Enqueue(Open,12);
QueueTraverse(Open);
}