Day6:堆栈的使用

6.1堆栈的使用

题目描述

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

输入描述:

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

输出描述:

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

代码6.1

    #include <iostream>
    #include <stdio.h>
    #include <stack>
    using namespace std;
    stack<int> S; //定义一个堆栈
    int main()
    {
        int n;
        while( scanf("%d",&n) != EOF && n != 0 )
        {
            for(int i = 1; i <= n; i++){
                char t;
                cin>>t; //scanf会把回车当成输入导致出错
                if(t == 'P') //入栈
                {
                    int m;
                    scanf("%d", &m);
                    S.push(m);
                }else if(t == 'A') //询问栈顶元素
                {
                    if(S.empty()){
                        printf("E\n");
                    }else{
                        printf("%d\n", S.top());
                    }
                }else if(t == 'O') //弹出栈顶元素
                {
                    if(!S.empty()) //栈非空
                        S.pop();
                }
            }
            printf("\n");
        }
        return 0;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容