专栏文章
题解:P1427 小鱼的数字游戏
P1427题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip6io0c
- 此快照首次捕获于
- 2025/12/03 06:58 3 个月前
- 此快照最后确认于
- 2025/12/03 06:58 3 个月前
这道题目要求我们输入一串数字,以
0 结尾,然后倒序输出这些数字(不输出 0)。1. 思路
- 使用栈(Stack):栈是一种**后进先出(LIFO)**的数据结构,正好符合“倒序输出”的需求。
- 输入时存入栈:每读一个数字(非
0),就压入栈(push)。 - 依次弹出栈顶元素:栈顶永远是最后输入的元素,弹出一个打印一个,直到栈空。
2. 关键点
stack<int> s:定义一个栈,用来存储输入的数字。while (cin >> x && x != 0):- 持续读取输入,直到遇到
0停止。 - 所有非
0的数字都会被压入栈。
- 持续读取输入,直到遇到
s.top():获取栈顶元素(最后输入的数)。s.pop():弹出栈顶,使下一个元素成为新的栈顶。if (!s.empty()) cout << " ";:- 控制空格,确保最后一个数字后面没有多余的空格。
3. 模拟
输入:
CPP3 65 23 5 34 1 30 0
执行过程:
-
依次读取数字,压入栈:CPP
| 30 | | 1 | | 34 | | 5 | | 23 | | 65 | | 3 | -
依次弹出并输出:
30(栈顶)→1→34→5→23→65→3(栈底)
-
最终输出:CPP
30 1 34 5 23 65 34.代码实现
#include<bits/stdc++.h>
using namespace std;
stack<int> s; // 定义一个栈,用来存储数字
int x; // 用于读取输入的数字
int main() {
// 读取输入,遇到0时停止
while(cin >> x && x != 0)
{
s.push(x); // 把数字压入栈
}
// 依次弹出栈顶元素并输出
while(!s.empty())
{
cout<<s.top(); // 输出栈顶元素
s.pop(); // 弹出栈顶
if (!s.empty()) // 如果栈不为空,补一个空格
cout << " ";
}
return 0;
}
好的话点个赞吧!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...