一、队列操作
问题描述
队列操作题。根据输入的操作命令,操作队列(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
题意:第一行为N个操作,以下N行 每行第一个数 代表 对队列的操作,1:入队 2:出队并输出 3:计算队中元素个数并输出
#include<queue>中的队列操作如下:(首先! 队列是先进先出)
back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数
queue 的基本操作举例如下:
queue入队,如例:q.push(x); 将x 接到队列的末端。
queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
C++:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
queue <int> q;
int main()
{
int n, m, t, flag=1;//flag控制输出no后的退出操作;若输出了一个no,flag置为0 如果没有flag这个参数 当队列空时,再连续输入2,会输出多次no;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&m);
if(m==1)
{
scanf("%d",&t);
q.push(t);
}
if(m==2)
{
if(q.empty()&&flag)//一定要加flag判断
{
cout<<"no"<&l