边界情况
约 10 分钟
空的栈、空的队列、只有一个节点的树……这些极端情况看着不起眼,却是 bug 最爱藏身的地方。平时代码跑得好好的,一遇到"空"或"只有一个"就崩,多半是没考虑边界。所以写完一定要拿这些情况试一试。
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> st;
if (!st.empty()) cout << st.top(); // 先判断,空栈就不取
else cout << "栈是空的,不能取"; // 输出这句
}
血的教训:对空栈直接调用 st.top() 或 st.pop() 是未定义行为,程序可能崩溃或给你一个乱七八糟的值。取之前永远先问一句"空不空"。
小纸条
从空栈里弹出会怎样?
登录 后可看答案