题目大意
对于一个栈,进行多组操作。
若操作为 $P$ ,则再读入一个整数,并将其压入栈顶。
若操作为 $O$ ,则将栈顶的值弹出,若栈中没有值,则不执行。
若操作为 $A$ ,则输出栈顶数据,若栈中没有值,则输出 $E$ 。
读入 $0$ 后结束程序。
数据范围
数据组数上限:$10$ 组
$1≤n≤10^4$
栈中元素范围:$[1,10000]$
思路
对于栈进行操作。
这里提供手写栈和 $STL$ 栈的代码。
代码1
#include<bits/stdc++.h>
using namespace std;
int q[11111],n,f;
int main()
{
char x;
int y;
while(cin>>n)
{
if(n==0)break;
for(int i=1;i<=n;i++)
{
cin>>x;
if(x=='P')
{
cin>>y;
q[++f]=y;
}
if(x=='O')
if(f>0)f--;
if(x=='A')
{
if(f==0)puts("E");
else cout<<q[f]<<endl;
}
}
cout<<endl;
}
return 0;
}
代码2
#include<bits/stdc++.h>
using namespace std;
int n;
stack <int> q;
int main()
{
char x;
int y;
while(cin>>n)
{
if(n==0)break;
for(int i=1;i<=n;i++)
{
cin>>x;
if(x=='P')
{
cin>>y;
q.push(y);
}
if(x=='O')
if(!q.empty())q.pop();
if(x=='A')
{
if(q.empty())puts("E");
else cout<<q.top()<<endl;
}
}
cout<<endl;
}
return 0;
}
总结
本题考的是有关栈的基本运用。
如果有什么问题,欢迎在评论区中指出。