循环队列的问题,为什么打印第4题时无法显示队列中的6?
循环队列设计一个容量为4的循环队列,进行如下操作,
并显示各步骤操作后队列的情况:
1、队列初始化;
2、1-2-3入队;
3、1-2出队;
4、4-5-6入队。
5、7入队;
#include "stdio.h"
#include "stdlib.h"
#define MAXNUM 4
#define true 1
#define false 0
typedef struct
{
int data[MAXNUM];
int front,rear;
}queuetype;
int initialqueue(queuetype*q);
int enter(queuetype*q,int x);
int quit(queuetype*q);
int printqueue(queuetype*q);
int main()
{
queuetype queue1;
queuetype*q=&queue1;
initialqueue(q);
printqueue(q);
enter(q,1);
enter(q,2);
enter(q,3);
printqueue(q);
quit(q);
quit(q);
printqueue(q);
enter(q,4);
enter(q,5);
enter(q,6);
printqueue(q);
enter(q,7);
printqueue(q);
return 0;
}
int initialqueue(queuetype*q)
{
q->front=q->rear=0;
}
int enter(queuetype*q,int x)
{
if((q->rear+1)%MAXNUM==q->front)
{
return(false);
}
q->data[q->rear]=x;
q->rear=(q->rear+1)%MAXNUM;
return(true);
}
int quit(queuetype*q)
{
if(q->front==q->rear)
{
return(false);
}
q->front=(q->front+1)%MAXNUM;
return(true);
}
int printqueue(queuetype*q)
{
int i=0;
if(q->front==q->rear)
{
printf("The queue is empty\n");
return 0;
}
for(i=q->front;i!=q->rear;i=(i+1)%MAXNUM)
{
printf("%d-",q->data[i]);
}
printf("\n");
return 0;
}