hdu1702 ACboy needs your help again![简单STL 栈 队列]
题目地址
题干


代码和解释
本题很简单,只要掌握STL stack和STL vector的语法即可作答。记录本题是为了记录STL vector的操作。
注意需要#include<stack>和#include<vector>。
这里是c++代码。
#include<iostream>
#include<stack>
#include<queue>
#include<string.h>
using namespace std;
void stack_opr(int m);
void queue_opr(int m);
int main()
{
int n;
int m;
char ff[10];
scanf("%d",&n);
while(n--){
scanf("%d",&m);
getchar();
scanf("%s",ff);
if(strcmp(ff,"FILO")==0){
stack_opr(m);
}
else if(strcmp(ff,"FIFO")==0){
queue_opr(m);
}
}
return 0;
}
void stack_opr(int m){
char io[4];
int num;
int i;
stack<int> s;
for(i=0;i<m;i++){
scanf("%s",io);
if(strcmp(io,"IN")==0){
scanf("%d",&num);
s.push(num);
}
else if(strcmp(io,"OUT")==0){
if(s.empty()==1){
printf("None\n");
}
else{
printf("%d\n",s.top());
s.pop();
}
}
}
return;
}
void queue_opr(int m){
char io[4];
int num;
int i;
queue<int> q;
for(i=0;i<m;i++){
scanf("%s",io);
//printf("io=%s\n",io);
if(strcmp(io,"IN")==0){
scanf("%d",&num);
q.push(num);
}
else if(strcmp(io,"OUT")==0){
if(q.empty()==1){
printf("None\n");
}
else{
printf("%d\n",q.front());
q.pop();
}
}
}
return;
}
参考
| 例子 | 说明 |
|---|---|
| queue q; | 定义栈,Type为数据类型,如int,float,char等 |
| q.push(item); | 把item放进队列 |
| q.front(); | 返回队首元素,但不会删除 |
| q.pop(); | 删除队首元素 |
| q.back(); | 返回队尾元素 |
| q.size(); | 返回元素个数 |
| q.empty(); | 检查队列是否为空 |
hdu1702 ACboy needs your help again![简单STL 栈 队列]的更多相关文章
- hdu1237 简单计算器[STL 栈]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu1237 题干 代码和解释 解本题时使用了STL 栈,要记得使用#include<stack>. 解本题时使用了isdigit()函 ...
- C语言 简单的栈
//简单的栈 #include<stdio.h> #include<stdlib.h> //栈的介绍:栈先进后出,一般用于将数据逆序输出 //栈一般只有四种方法--进栈,出栈, ...
- C++编程练习(4)----“实现简单的栈的链式存储结构“
如果栈的使用过程中元素数目变化不可预测,有时很小,有时很大,则最好使用链栈:反之,如果它的变化在可控范围内,使用顺序栈会好一些. 简单的栈的链式存储结构代码如下: /*LinkStack.h*/ #i ...
- C++编程练习(3)----“实现简单的栈的顺序存储结构“
栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 栈又称为后进先出(Last In First Out)的线性表,简 ...
- STL中队列(queue)的使用方法
STL 中队列的使用(queue) 基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front() 返回第一个元素(队顶元素) ...
- Java编程的逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 从零开始写STL—栈和队列
从零开始写STL-栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决:主要解决在软件系统中,常常要将 ...
- C++实现一个简单的双栈队列
双栈队列的原理是用两个栈结构模拟一个队列, 一个栈A模拟队尾, 入队的元素全部压入此栈, 另一个栈B模拟队首, 出队时将栈A的元素弹入栈B, 将栈B的栈顶元素弹出 此结构类似汉诺塔, 非常经典, 这里 ...
- 简单的js队列
简单的js队列 /** * [Queue] * @param {[Int]} size [队列大小] */ function Queue(size) { var list = []; //向队列中添加 ...
随机推荐
- 【转载】C#中List集合使用IndexOf判断元素第一次出现的索引位置
在C#的List集合操作中,有时候需要判断元素对象在List集合中第一次出现的索引位置信息,此时需要使用到List集合的IndexOf方法来判断,如果元素存在List集合中,则IndexOf方法返回所 ...
- JavaScript 的内置对象和浏览器对象
JavaScript 中对象通常包括两种类型:内置对象和浏览器对象,此外用户还可以自定义对象. 在 ECMAScript 中,更精确的定义应该分为:本地对象.内置对象和宿主对象. 对象包含两个要素: ...
- php 函数阶乘理解
<?php //函数阶乘 函数调用自身,函数在执行的时候每次都会开辟一个空间,如 /** * $a =3的话,首先判断 3>1 为真 $r=3*demo(3-1) 开辟一个空间调用自身. ...
- 关于MySQL数据库编码修复相关问题
本篇主要是本人在实际开发过程中遇到的MySQL字符编码等bug修复相关问题. 在使用下列语句在执行数据库表通过flask-sqlacodegen 进行ORM映射成模型类的时候发生的bug: flask ...
- OpenStack共享组件-RabbitMQ消息队列
1. MQ 全称为 Message Queue, 消息队列( MQ ),是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 消息 ...
- go语言笔记1
Go语言学习整理 本文基于菜鸟教程,对于自己不明白的点加了点个人注解,对于已明确的点做了删除,可能结构不太清晰,看官们可移步Go语言教程 1 Go语言结构当标识符(包括常量.变量.类型.函数名. ...
- 【Difference Between Primes HDU - 4715】【素数筛法打表+模拟】
这道题很坑,注意在G++下提交,否则会WA,还有就是a或b中较大的那个数的范围.. #include<iostream> #include<cstdio> #include&l ...
- win10下无法安装loadrunner,提示“管理员已阻止你运行此应用”
如下图: 1.再次进入控制面板,并且选择用户账户后把最下面的[更改用户账户控制设置],里面有个滑条,把滑条拉到最下面的[从不通知]上面并且确定. 2.按[Win+R]快捷键打开运行,输入 gpedit ...
- 快排算法Java版-每次以最左边的值为基准值手写QuickSort
如题 手写一份快排算法. 注意, 两边双向找值的时候, 先从最右边起找严格小于基准值的值,再从最左边查找严格大于基准base的值; 并且先右后左的顺序不能反!!这个bug改了好久,233~ https ...
- pass的作用?
1.空语句 do nothing 2.保证格式完整,保证语义完整 3.占位语句