题描述
队列操作题。根据输入的操作命令,操作队列(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
#include
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()
itoa用法如下:
itoa是广泛应用的非标准C语言扩展函数,通常在<stdlib.h>头文件中包含这个函数。
原型:charitoa(int value,charstring,int radix);
int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
atoi用法如下:
atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数,
原型:intatoi(const char *nptr);
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。包含在头文件stdlib.h中。
这个题的思路就是根据题目要求对队列进行操作,把要输出的数放到一个string数组里,如果输出的是一个数字,就把数字转化为字符串。
1 | #include<bits/stdc++.h> |
或者1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43#include<iostream>
#include<cstdlib>
#include<queue>
#include<cstring>
using namespace std;
queue <int> q;
int main()
{
int n,m,t,k=0,flag=1;//k用来统计要打印字符串的个数,n为输入个数,m,t都是临时变量,若输出了一个no,flag置为0
cin>>n;
for(int i=0;i<n;i++)
{
cin>>m;
if(m==1)//当输入为1
{
cin>>t;
q.push(t);
}
if(m==2)//当输入为2
{
if(q.empty()&&flag)//注意一定要加flag判断
{
cout<<"no"<<endl;
flag=0;
}
else
{
if(flag)
{
cout<<q.front()<<endl;
q.pop();
}
}
}
if(m==3)
{
if(flag)
cout<<q.size()<<endl;
}
}
return 0;
}