试题 算法提高 队列操作
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
第一行一个数字N。
下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
样例输出
19
1
56
0
no
数据规模与约定
1<=N<=50
代码
#include<stdio.h>
#include<string.h>
int main(){
int n,b,i,j,count1=0,count2=0;//count1保存入队的次数,count2保存出队的次数
scanf("%d",&n);
int a[n];
memset(a,-1,sizeof(a));//初始化数组a
while(n--){//循环至n=0结束
scanf("%d",&b);//读取此次的操作要求
if(b==1){//入队
scanf("%d",&a[count1]);//保存至数组a中
count1++;//ccount1加一
}
else if(b==2){//出队并输出
if(a[count2]==-1){//判断此时的数组a中是否是空队
printf("no\n");
break;//是空队则直接结束循环
}
else{
printf("%d\n",a[count2]);//不是空队则输出对应的数
count2++;//count2加一
}
}
else{//计算队中元素个数并输出
printf("%d\n",count1-count2);//入队次数减去出队次数则为现存的元素个数
}
}
return 0;
}