• 堆栈的使用【ACM】


    题目描述:

        堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,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

     

    结题思路:

      本题是常规栈操作题,按照题目要求读取字符,根据字符做出操作,有几点需要注意的地方:

      1、每组数据第一行为int型,表示操作次数,当为0时要停止。

      2、当用%c读取每行的第一个操作数时,前面要加空格如 scanf(“ %c”,&tmp);这样可以过滤掉之前输入流中的空格或者换行。如果使用%s读数据就不用这么麻烦,只要考虑字符串第一位的值即可。

      3、需要着重注意,当栈为空时不能进行退栈操作,会发生错误,每次进行退栈时要检查栈是否为空,只有当不为空时才能退栈。

     

    解题代码:

    #include<stack>
    #include<stdio.h>
    using namespace std;
    stack<int> buf;
    int main(){
        //freopen("test.txt","r",stdin);
        int n;
        char s[10];
        //scanf("%d",&n);
        while(scanf("%d",&n)!=EOF&&n!=0){
            while(!buf.empty()) buf.pop();
            //stack<char> buf;
            for(int i=0;i<n;i++){
                //char tmp;
                int data;
                scanf("%s",s);
                if(s[0]=='P'){
                    scanf("%d",&data);
                    //printf("%c
    ",data);
                    buf.push(data);
                }
                else if(s[0]=='O'){
                    if(!buf.empty())
                        buf.pop();
                }
                else if(s[0]=='A'){
                    if(!buf.empty())
                        printf("%d
    ",buf.top());
                    else
                        printf("E
    ");
                }
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    Win10企业版远程桌面结合frp实现公网远程
    ibatis入门教程
    没找到工作的Java软件工程师是屌丝中的屌丝啊
    消息队列常见问题和解决方案(转)
    Mycat安装部署简单使用
    MySQL以及MyCat的安装和使用
    MyCat用户配置-添加用户、修改用户、删除用户、重置用户密码
    mycat的下载和安装
    CentOS基础命令大全 (转)
    唯一ID生成器。
  • 原文地址:https://www.cnblogs.com/bramblewalls/p/6657699.html
Copyright © 2020-2023  润新知