1 条题解
-
0
栈的逆序输出——题解
解题思路
栈遵循“后进先出”的原则。
将输入的数字按照原顺序依次压入栈中,最后输入的数字会位于栈顶。之后不断读取并删除栈顶元素,得到的顺序正好就是输入顺序的相反顺序。
处理过程:
- 定义一个整数栈
stack<int> s; - 读入一个整数,就使用
s.push(x)将它放入栈中; - 当
s.empty()为假时:- 使用
s.top()读取并输出栈顶元素; - 使用
s.pop()删除栈顶元素。
- 使用
易错点
pop()没有返回值,不能写成:int x = s.pop();必须先使用
top()读取,再使用pop()删除:int x = s.top(); s.pop();调用
top()和pop()前,必须保证栈不为空。正确性说明
设输入顺序为 。
所有元素依次入栈后,栈顶到栈底的顺序为 。程序每次输出栈顶并将其删除,因此输出顺序依次为 ,正好是输入序列的逆序。
所以程序能够正确完成逆序输出。
复杂度分析
- 时间复杂度:;
- 空间复杂度:。
C++17 参考代码
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; stack<int> s; for (int i = 0; i < n; i++) { int x; cin >> x; s.push(x); } while (!s.empty()) { cout << s.top() << " "; s.pop(); } return 0; } - 定义一个整数栈
- 1
信息
- ID
- 4974
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 15
- 已通过
- 6
- 上传者
粤公网安备44195502000195号