题目 1895: 队列操作

题目

队列操作题。根据输入的操作命令,操作队列(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

解题思路

设置一个数组表示队列,设置起始元素的下标、结尾元素的下标变量,以记录队列头尾,当出队列,那么起始元素下标加一,表示队列缩短;若入队列,结尾元素的下标加一,表示队列延长;队列长度即为两个下标之差。

易错点

“出队命令可能会出现空队出队(下溢),请输出‘no’,并退出”,加粗字体表示的是,不再读取接下来的所有的命令。

代码

#include
int main()
{
	int n,i,temp;
	int a[100000],e=0,s=0;
	scanf("%d",&n);
	for (i=0;i<n;i++){
	    scanf("%d",&temp);
	    switch (temp){
	        case 1:scanf("%d",&a[e++]);break;//入队
	        case 2://出队
	            {
	                if (s>=e)
	                {
	                    printf("no\n");
	                    i = n;
	                }
	                else
	                    printf("%d\n",a[s++]);
	                break;
	            }
	        case 3://计算队中元素个数并输出
	            {
	                if (s>=e)
	                    printf("0\n");
	                else
	                    printf("%d\n",e-s);
	                break;
	            }
	    }
	}
	return 0;
}

你可能感兴趣的:(蓝桥杯真题(C/C++),c语言,队列,蓝桥杯)