求大神看看什么地方错了,很简单的一道题,但我找不到错误了
题目是:Description
实现环形队列(MAXN不超过100001),要求能够进行进队出队操作,参考课本P15页例程。
Input
初始时,队列为空。
第一行有一个整数q,表示操作的个数,接下来的q行里,每行格式如下:
enqueue xxx, 表示把整数xxx进队;
dequeue, 表示出队.
Output
对于每次出队操作,打印出队元素,如出队不成功,打印-1.
Sample Input
3
enqueue 1234567890
dequeue
dequeue
Sample Output
1234567890
-1
我写的代码是
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100001
int que[MAXN];
int head=0,tail=0;
void en_queue(x)
int x;
{
tail=(tail+1)%MAXN;
if(tail==head)
{
if(tail==0)tail=MAXN-1;
else tail--;
}
else que[tail]=x;
}
int de_queue(p_y)
int *p_y;
{
if(head==tail)
return(-1);
head=(head+1)%MAXN;
*p_y=que[head];
return (*p_y);
}
int main()
{
int q,i;
int x;
char str[8];
scanf("%d",&q);
for(i=0;i<q;i++)
{
scanf("%s",str);
if(strcmp(str,"enqueue")==0)
{
scanf("%d",&x);
en_queue(x);
}
if(strcmp(str,"dequeue")==0)
{
printf("%d\n",de_queue());
}
}
return 0;
}
我自己运行了没有问题,但就是过不了,请大神帮忙看下错哪里了,我实在找不到了