九度oj 1108

来源:互联网 发布:淘宝网平板电脑价格 编辑:程序博客网 时间:2024/05/17 22:09
题目描述:

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

输入:

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

输出:

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

样例输入:
3AP 5A4P 3P 6O A0
样例输出:
E53
来源:
2011年吉林大学计算机研究生机试真题
#include<stdio.h>#include<string.h>#include<stack>#include<iostream>using namespace std; int main(){    int n;    while(cin>>n)    {                 stack<int> S;                 if(n==0)                 {                         break;                         }                 for(int i=0;i<n;i++)                 {                 char a;                 int p,k;                 cin>>a;                 if(a=='P')                 {                           cin>>p;                           S.push(p);                           }                          else if(a=='O')                           {                                     if(!S.empty())                                     {                                                   S.pop();                                                   }                                                                                                      }                                                else   if(a=='A')                                                   {                                                             if(S.empty()==1)                                                             {                                                                             cout<<"E"<<endl;                                                                             continue;}                                                        k=S.top();                                                                                                                     cout<<k<<endl;                                                        }                                                        }                                                        cout<<endl;                                                                                                                }                                                        }

0 0