题解(模拟栈操作)
2026-05-26 17:18:44
发布于:浙江
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————(防偷窥线)
// iostream 是 C++ 标准输入输出头文件
// 作用:让程序可以使用 cin(输入) 和 cout(输出)
#include <iostream>
// stack 是 C++ 栈容器头文件
// 作用:让程序可以使用栈(stack)的功能:push、pop、top、empty、size
#include <stack>
// 使用标准命名空间 std
// 作用:不用每次写 std::cin、std::cout,直接写 cin、cout 就行
using namespace std;
// 定义一个 int 类型(整数类型)的变量 n
// 作用:用来存储用户接下来要输入多少条指令
int n;
// 定义一个栈变量 s
// stack<int> 表示:这个栈里面只能存放 int(整数)类型的数据
// 作用:存储我们要操作的数字,实现栈的功能
stack<int> s;
// 定义一个字符串类型变量 s1
// string = 字符串 = 一串文字/指令
// 作用:用来接收用户输入的指令,比如 push、pop、top、size、empty
string s1;
int main()
//进入主程序
{
// 输入一个整数 n
// 意思:告诉程序,接下来会有 n 条操作指令
cin >> n;
// 循环 n 次,依次执行 n 条指令
// i 从 0 开始,循环 n 次后结束
for(int i = 0; i < n; i++)
{
// 每次循环先读入一条指令,存入字符串变量 s1 中
// 比如输入 push → s1 = "push"
// 输入 pop → s1 = "pop"
cin >> s1;
// 根据 s1 里的指令,判断要执行什么操作
if(s1 == "push")
// 如果指令是 push → 入栈操作
{
// 定义一个临时整数变量 x,用来存要放进栈里的数字
int x;
// 输入要放进栈里的数字
cin >> x;
// 把数字 x 放进栈顶
// 栈特点:先进后出,只能从顶部进、顶部出
s.push(x);
}
else if(s1 == "pop")
// 如果指令是 pop → 出栈(删除栈顶元素)
{
// 先判断栈是不是空的
// !s.empty() → 栈不为空时才能弹出
if(!s.empty())
{
// s.top() → 获取栈顶的数字(不删除)
cout << "pop " << s.top() << '\n';
// s.pop() → 删除栈顶元素
s.pop();
}
else
{
// 栈是空的 → 不能弹出,输出失败
cout << "pop fail\n";
}
}
else if(s1 == "top")
// 如果指令是 top → 查看栈顶元素
{
// 栈不为空才能查看
if(!s.empty())
{
// 输出栈顶元素
cout << "top = " << s.top() << '\n';
}
else
{
// 栈空,查看失败
cout << "top fail\n";
}
}
else if(s1 == "size")
// 如果指令是 size → 查看栈里有多少个元素
{
// s.size() → 返回栈里元素的个数
cout << "size = " << s.size() << '\n';
}
else if(s1 == "empty")
// 如果指令是 empty → 判断栈是否为空
{
// s.empty() → 栈空返回真,否则假
if(s.empty())
{
// 栈空 → 输出 yes
cout << "yes\n";
}
else
{
// 栈不空 → 输出 no
cout << "no\n";
}
}
}
// 主函数正常结束,返回 0
return 0;
}
制作十分十分不易
求给个赞~
拜托拜托
全部评论 2
做起来
2026-05-26 来自 浙江
1我还在想hyw
2026-05-26 来自 浙江
1
真的非常不容易
2026-05-26 来自 浙江
1







有帮助,赞一个