首先,我钓鱼的肝说一下粉丝版和vip版的区别
粉丝版更加详细,vip版比较粗...
所以动动手指,关注一下就可以解锁带知识详解的文章啦。
题目描述
小爱一家去“景区”游览,停车的时候小爱发现停车场的电子屏上会实时显示当前要驶入停车场的车辆牌照信息。
已知每位司机都非常文明,在到达停车场前会直觉排成一列,按照“先到达先进入”的方式驶入停车场中。小爱记录了从第一辆车到达停车场排队开始,到某时刻的车辆排队情况,以及驶入停车场的车辆牌照信息。
现在他想知道,到他记录结束时,哪辆车正排在队伍的队头,输出这辆车的信息。
输入格式
输入中包含大写字母 I(表示车辆进行排队)和车辆的信息(一个6位的正数);
或者大写字母 O(表示车辆从队伍中离队,驶入到停车场);
输入数据不超过100行。数据保证不会出现队空出队的情况。
输出格式
输出当统计结束时,排在队首的车辆牌照信息,若此时队伍为空(没有车在等待),则输出“None”。
样例 #1
样例输入 #1
I 123145
I 245679
O
I 345678
O
样例输出 #1
345678
知识点:
队列是一种常用的数据结构,它只允许在一端进行插入操作(入队),在另一端进行删除操作(出队)
队列的定义:
queue<数据类型> 队列名称;
例:
queue<int> q; //一个每个元素都为int类型的队列,叫做q
队列的特点是先进先出(FIFO):最先入队的元素最先出队,最后入队的元素最后出队。这一特性使得队列常用于需要按照顺序处理数据的场景,如多线程任务调度、消息队列等。
队列常用的操作有:
设队列名为"q"
- 入队(q.push):将元素插入队尾。
- 出队(q.pop):将队头元素删除并返回。
- 队列是否为空(q.empty):判断队列是否为空。
- 队列大小(q.size):返回队列的元素个数。
- 获取队头元素():返回队头元素,但不删除。
但是队列及支持访问和操作第一个元素和最后一个元素
在实际应用中,队列的应用很广泛,比如计算机中的任务队列、操作系统中的进程调度、网络通信中的消息队列等等。
代码
老样子,上代码!
无讲解版
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int main(){
queue<int> q;
char a;
int x;
while(cin>>a)
{
if(a=='I')
{
cin>>x;
q.push(x);
}
else
{
q.pop();
}
}
if(!(q.empty()))
{
cout<<q.front();
}
else
{
cout<<"None";
}
return 0;
}
带讲解版
/*
策略:
循环输入,如果输入I,输入车牌号,进入停车场
如果输入O,第一个进停车场的出队
/*csdn博客,钓鱼的肝,csdn bocker,fishing's liver,csdn buoke,diaoyudegan*/
#include<bits/stdc++.h>
//万能头
#include<queue>
//由于前面加了万能头这行加不加无所谓
using namespace std;
int main(){
//主函数
queue<int> q;
//定义queue队列(前面说过)
char a;
//定义查尔型变量,就是我们要输入的I/O
int x;
//x代表车牌号,因为不能直接输入队列里的元素
while(cin>>a)//循环输入查尔a,按control+z结束输入
{
if(a=='I')//如果a=大写i
{
cin>>x;
//输入车牌号
q.push(x);
//将车牌号x推入队列
}
else//如果输入o
{
q.pop();
//队首出队
}
}
if(!(q.empty()))//如果q不为空
{
cout<<q.front();
//打印q的第一个元素
}
else//如果q为空
{
cout<<"None";//输出 “没有 ”
}
return 0;//返回0
}
/*csdn博客,钓鱼的肝,csdn bocker,fishing's liver,csdn buoke,diaoyudegan*/
我敢说这是csdn里非常详细的注释了
赞+关注+善意评论+转发朋友=延长无限年寿命
3q very much!