http://acm.hdu.edu.cn/showproblem.php?pid=1702
栈和队列的简单应用 水题
AC代码:
#include <stdio.h>
#include <stack>
#include <queue>
#include <string.h>
using namespace std;
int main (){
int n;
int m;
int k;
char name[10];
scanf ("%d",&n);
while (n--){
scanf ("%d %s",&m,name);
if (strcmp("FIFO",name)==0)
{
queue<int>a;//队列声明
for (int i=0;i<m;i++)
{
scanf ("%s",name);
if (name[0]=='I')
{
scanf ("%d",&k);
a.push(k);//k入队
}
else
{
if (a.empty())//队列为空输出 None
{
printf ("None\n");
}
else
{
printf ("%d\n",a.front());//输出队首元素
a.pop();//出队
}
}
}
}
else
{
stack<int>b;//栈声明
for (int i=0;i<m;i++)
{
scanf ("%s",name);
if (name[0]=='I')
{
scanf ("%d",&k);
b.push(k);//入栈
}
else
{
if (b.empty())//为空栈输出 None
{
printf ("None\n");
}
else
{
printf ("%d\n",b.top());//输出栈顶元素
b.pop();//出栈
}
}
}
}
}
return 0;
}