logo AlgoBeat OnlineJudge
登录 注册

【模板】 栈 题解

作者: Nexus  ·  发布于 2026-05-31 11:23:32  ·  最后修改于 2026-05-31 12:17:13
已通过
审核员:Lightning ING · 2026-05-31 12:17:13

知识铺垫

相信大家都会 STL 的栈了吧。
先来介绍一下 STL 的栈。
栈(stack)是一个先进后出的数据结构,可以使用如下方法定义:
stack<数据类型> 栈名
栈主要有如下几个函数:

  1. push(x) 入栈
  2. pop() 出栈
  3. top() 获取栈顶元素
  4. size() 获取元素数量
  5. empty() 是否为空

其中,在使用第 2、3 个函数前一定要判定是否为空

思路

  • 对于操作 push,直接 push(x) 即可。
  • 对于操作 query先判断是否为空,为空输出 Anguei!,否则使用 top() 获取栈顶元素并输出。
  • 对于操作 pop先判断是否为空,为空输出 Empty,否则使用 pop() 弹出栈顶元素。
  • 对于操作 size,直接使用 size() 获取大小并输出。

代码

大部分人都只看这个

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
stack<int> p;
signed main(){
    int n;
    cin>>n;
    while(n--){
        string s;
        int x;
        cin>>s;
        if(s=="push"){
            cin>>x;
            p.push(x);
        }
        if(s=="pop"){
            if(!p.empty()) p.pop();
            else cout<<"Empty"<<endl;
        }
        if(s=="query"){
            if(!p.empty()) cout<<p.top()<<endl;
            else cout<<"Anguei!"<<endl;
        }
        if(s=="size") cout<<p.size()<<endl;
    }
    return 0;
}

暂无评论

登录 后即可评论。