数据结构——队列的使用
TOJ 4368
描述
请你定义一个队列,可以对队列进行“入队”、“出队”、“队列输出”等操作。键盘输入一些命令,可以执行上述操作。本题中,队列中元素均为整数。队列的最大元素个数为1000。
输入
输入各个命令,它们对应的格式如下:
入队:enq x,x代表入队的元素,这里enq和元素之间用空格分隔。
队列输出:printq
出队:deq
当输入的命令为exit时,程序结束。
输出
当输入的命令为deq时,请输出出队列的元素值。
当输入的命令是printq时,请输出队列中所有元素的值。
注意,如果没有满足的元素,请输出None。
样例输入
enq 1 enq 2 printq deq printq deq printq exit
样例输出
1 2 1 2 2 None
这题比栈那题坑少多了,就是注意一下循环输出的时候,最后一位是tail-1,不是tail~
#include <stdio.h>
#include <string.h>
int q[1001],tail,head;
void enqueue(int x)
{
q[tail]=x;
tail=(tail+1)%1000;
}
int dequeue()
{
int x;
x=q[head];
head=(head+1)%1000;
return x;
}
int main()//4368
{
char a[10];
int n,j;
head=tail=0;
while(scanf("%s",a))
{
if(strcmp(a,"exit")==0)break;
if(strcmp(a,"enq")==0)
{
scanf("%d",&n);
enqueue(n);
}
else if(strcmp(a,"printq")==0)
{
if(head==tail)
printf("None\n");
else
{
for(j=head;j<tail-1;j++)
printf("%d ",q[j]);
printf("%d\n",q[tail-1]);
}
}
else if(strcmp(a,"deq")==0)
{
if(head==tail)
printf("None\n");
else
printf("%d\n",dequeue());
}
}
}
还没有评论,来说两句吧...