C - ACboy needs your help again!

  • ACboy was kidnapped!!
    he miss his mother very much and is very scare now.You can’t image how dark the room he was put into is, so poor ?.
    As a smart ACMer, you want to get ACboy out of the monster’s labyrinth.But when you arrive at the gate of the maze, the monste say :" I have heard that you are very clever, but if can’t solve my problems, you will die with ACboy."
    The problems of the monster is shown on the wall:
    Each problem’s first line is a integer N(the number of commands), and a word “FIFO” or “FILO”.(you are very happy because you know “FIFO” stands for “First In First Out”, and “FILO” means “First In Last Out”).
    and the following N lines, each line is “IN M” or “OUT”, (M represent a integer).
    and the answer of a problem is a passowrd of a door, so if you want to rescue ACboy, answer the problem carefully!
  • Input
    The input contains multiple test cases.
    The first line has one integer,represent the number oftest cases.
    And the input of each subproblem are described above.
  • Output
    For each command “OUT”, you should output a integer depend on the word is “FIFO” or “FILO”, or a word “None” if you don’t have any integer.
  • 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<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        while(n--)
        {
            int num;
            char sign[10];
            scanf("%d%s",&num,sign);
            if(strcmp(sign,"FIFO")==0)
            {
               queue<int> qe;
               for(int i=0;i<num;i++)
              {
                int a;
                char b[10];
                scanf("%s",b);
                //printf("%d\n",i);
                if(strcmp(b,"IN")==0){scanf("%d",&a);qe.push(a);}
                else
                {
                    if(!qe.empty())
                    {
                    printf("%d\n",qe.front());
                    qe.pop();
                    }
                    else printf("None\n");

                }
              }
            }
            else
            {
                stack<int>st;
                for(int i=0;i<num;i++)
                {
                    int a;
                    char b[10];
                    scanf("%s",b);
                    if(strcmp(b,"IN")==0){scanf("%d",&a);st.push(a);}
                    else {
                            if(!st.empty()){
                            printf("%d\n",st.top());
                            st.pop();}
                            else printf("None\n");
                          }
                }
            }

        }
    }
   return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值