在一个阳光明媚的早晨,小桥收到了一份神秘的礼物——一只魔法盒子。这个盒子有四个按钮,每个按钮都有特殊的功能:
- 按钮 AA:“添加”,将一个神秘物品(每个物品都有一个独特的编号)放入盒子中。
- 按钮 BB:“移除”,将盒子中最早放入的物品移出。
- 按钮 CC:“查看”,查看盒子中最早放入的物品。
- 按钮 DD:“计数”,查看当前盒子中有多少个物品。
然而,如果盒子是空的,那么按钮 BB 和按钮 CC 就无法正常工作。此时,盒子会显示错误信息:如果按下按钮 BB,盒子会显示“lan”。如果按下按钮 CC,盒子会显示“qiao”。
小桥需要你的帮助,他会给你一系列的按钮操作,你需要帮他解读盒子的反馈。
输入格式
第一行,一个整数 nn,表示操作的次数。
接下来 nn 行,每行表示一个操作。格式如下:
- “1 x”,表示按下按钮 AA,将编号为 xx 的物品放入盒子。
- “2”,表示按下按钮 BB,移除一个物品。
- “3”,表示按下按钮 CC,查看物品。
- “4”,表示按下按钮 DD,查看物品个数。
输出格式
输出若干行,对于每个操作,按照上述盒子的反馈原则输出结果。
每条输出之间应当用空行隔开。
样例输入
7
3
2
4
3
3
3
2
样例输出
qiao
lan
0
qiao
qiao
qiao
lan
代码:
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int queue[N];
int main()
{
int n,x;//n代表操作次数
int front=0,rear=-1;//初始化头尾指针
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int q;
scanf("%d",&q);
switch(q)
{
case 1:
scanf("%d",&x);
queue[++rear]=x;//尾指针先向后一位,再将x插入对应位置
break;
case 2:
if((rear-front+1)!=0)//计算队列长度公式:rear-front+1
front++;
else
printf("lan\n");
break;
case 3:
if((rear-front+1)!=0)
printf("%d\n",queue[front]);
else
printf("qiao\n");
break;
case 4:
printf("%d\n",rear-front+1);
break;
}
}
return 0;
}
总结:
//引用strlen需要包含头文件#include <string.h>
//按住shift+字母:大写
//case一般搭配break使用
//初始化头尾指针:front=1;rear=-1
//计算队列长度公式:rear-front+1
//对队列增加一个元素:queue[++rear]=x;//尾指针先向后一位,再将x插入对应位置
//对队列删除一个首元素:front++;