STL<queue>的使用
2024-08-30 05:14:48
队列是一种基本的线性数据结构。它满足先进先出(First In ,First Out)的原则。
我们可以应用这种数据结构实现很多复杂的问题。但每次要手写队列的相关函数并不省事,我们便可以应用STL中的queue库来使用队列。
1调用头文件
#include<queue>
2.定义队列
queue<int>q;
3.基本操作
push(). ----向队列中添加新元素,填入的新元素进入队尾。
pop(). ----弹出队顶元素,不返回任何值。
(刘汝佳先生的算法竞赛入门经典中说,验证一个人是不是程序员只要问他push的反义词是啥...233)
front(). ----返回队顶元素的值
back(). ----返回队尾元素的值
empty(). ----验证队列是否为空,若空返回true
size(). ----返回队列大小
【以题带点】
洛谷P1996约瑟夫问题
传送门https://www.luogu.org/problemnew/show/P1996
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
输入样例#1:
10 3
输出样例#1:
3 6 9 2 7 1 8 5 10 4
说明
m,n≤100
【代码实现】
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int n,m,ex=1;
int main()
{
scanf("%d%d",&n,&m);
queue<int>q;
for(int i=1;i<=n;i++) q.push(i);//队列初始化
while(!q.empty())//在队列不为空时
{
if(ex==m)//ex记录数到第几个人,初始为1,数到时就弹出队顶元素
{
cout<<q.front()<<" ";//先输出完再弹出,并为ex重新赋值
q.pop();
ex=1;
}
else
{
ex++;
q.push(q.front());//两条开始并不很理解的语句,push的作用不是把队首元素转移到队尾,而是在队尾再添加一个元素
q.pop();//把刚才在队尾填的弹出
}
}
return 0;
}
最新文章
- flume+sparkStreaming实例 实时监控文件demo
- IBM WebSphere MQ 7.5基本用法
- python之map、filter、reduce、lambda函数
- 字符串匹配的sunday算法
- 浏览器中打开IOS应用并传参
- AngularJS(5)-Http
- heritrix 相关
- thinkphp中关于rbac的两个session
- APNs-远程推送
- java线程优先级
- Python Web开发问题收集(二)
- angular清除select空格
- ubuntu 网络配置
- leetcode-algorithms-5 Longest Palindromic Substring
- 2017-2018-2 20155315《网络对抗技术》Exp9 :Web安全基础
- Python之 Lambda表达式
- 转mysql横向扩展和纵向扩展
- redis 面试
- luci框架-LUA的一个web框架使用
- 661. Image Smoother色阶中和器