zoukankan      html  css  js  c++  java
  • JOBDU 1108 堆栈的使用

    之所以把这道题目贴出来的原因,是因为真的有几个地方要注意的

    题目1108:堆栈的使用

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:10763

    解决:3119

    题目描述:

        堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。

    输入:

         对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。

    输出:

        对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。

    样例输入:
    3
    A
    P 5
    A
    4
    P 3
    P 6
    O 
    A
    0
    样例输出:
    E
    5
    
    3
    来源:
    2011年吉林大学计算机研究生机试真题
    首先注意的是这道题题目说执行‘O’时若为空则不用考虑,这时候一定要判断一下他是否为空
    另外这道题用cin,cout才过,用scanf,printf竟然时间超限
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<stack>
    using namespace std;
    int main()
    {
        int t;
        while(cin >> t&&t)
        {
            stack<int>q;
            while(t--)
            {
                char c;
                cin >> c;
                if(c=='P')
                {
                    int a;
                    cin >> a;
                    q.push(a);
                }
                if(c=='O')
                {
                    if(!q.empty())//这里一定要判断是否为空
                    q.pop();
                }
                if(c=='A')
                {
                    if(q.empty())
                        cout << "E" << endl;
                    else cout << q.top() << endl;
                }
            }
            cout << endl;
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    SpringBoot之集成Socket
    SpringBoot之集成WebSocket
    SpringBoot之统一异常处理
    请求的转发和重定向
    5+App使用定位
    将Tomcat注册为Windows服务
    Tomcat环境变量设置
    CentOS7搭建Gitlab详细过程
    Python 12 内置函数
    Python 11 生成器
  • 原文地址:https://www.cnblogs.com/l609929321/p/6550544.html
Copyright © 2011-2022 走看看