# 栈 # 队列 ——HDU

ACboy被绑架了!!
他非常想念他的母亲,现在非常害怕。你无法想象他被放进的房间有多暗,那么可怜
:(。
作为一个聪明的ACMer,你想让ACboy摆脱怪物的迷宫。当您到达迷宫的大门时,蒙斯特说:“我听说您很聪明,但是如果不能解决我的问题,您将会和ACboy一起死。”
怪物的问题显示在墙上:
每个问题的第一行是整数N(命令数),以及单词“ FIFO”或“ FILO”。(您非常高兴,因为您知道“ FIFO”代表“先进先出”和“ FILO”表示“先入后出”)
,以及随后的N行,每行均为“ IN M”
而且问题的答案是一扇门,所以如果您想营救ACboy,请仔细回答问题!
输入值
输入包含多个测试用例。
第一行有一个整数,代表测试用例的数量。
并且上面描述了每个子问题的输入。
输出量
对于每个命令“ OUT”,您应该输出一个整数,取决于单词“ FIFO”或“ FILO”,如果没有任何整数,则输出单词“ None”。

.

Sample Input
4
4 FIFO
IN 1
IN 2
OUT
OUT
4 FILO
IN 1
IN 2
OUT
OUT
5 FIFO
IN 1
IN 2
OUT
OUT
OUT
5 FILO
IN 1
IN 2
OUT
IN 3
OUT

Sample Output
1
2
2
1
1
2
None
2
3
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t,n,temp;
	cin>>t;
	while(t--)
	{
		string str,strl;
		queue<int>q;//定义一个队列 
		stack<int>a;//定义一个栈 
		cin>>n>>str;
		for(int i=0;i<n;i++)
		{
			if(str=="FIFO")//模拟队列操作
			{
				cin>>strl;//输入“操作名字”
				if(strl=="IN")//“输入”操作
				{
					cin>>temp;//输入一个元素
					q.push(temp);//加入到队列尾 
				}
				if(strl=="OUT")//“输出”操作
				{
					if(q.empty())//若队列为空
					cout<<"None"<<endl;
					else{
						cout<<q.front()<<endl;//输出队首
						q.pop();//删除队首
						};
				}
			}
			else//模拟栈操作
			{
				cin>>strl;//输入“操作名字”
				if(strl=="IN")//“输入”操作
				{
					cin>>temp;//输入一个元素
					a.push(temp);//加入到栈尾 
				}
				if(strl=="OUT")//“输出”操作
				{
					if(a.empty())//若栈为空
					cout<<"None"<<endl;
					else
					{
						cout<<a.top()<<endl;//输出栈首
						a.pop();//删除栈首
					}
				}
			}
		}
	}
	return 0;
}
原文地址:https://www.cnblogs.com/yuanyulin/p/14026804.html