入栈出栈
约 10 分钟
手写栈容易越界,C++ 标准库直接提供了 stack,用它更省心。要先 #include <stack>。
#include <stack>
stack<int> s;
s.push(5); // 入栈
s.push(8);
cout << s.top(); // 看栈顶:8(不弹出)
s.pop(); // 出栈,弹掉 8(注意 pop 不返回值)
cout << s.top(); // 现在栈顶是 5
cout << s.size(); // 元素个数
cout << s.empty(); // 空返回 true
常用就这五个:push 入栈、top 看顶、pop 弹顶、size 个数、empty 判空,每个操作都是 。
要特别注意:pop() 只删除、不返回值,想拿到栈顶得先 top() 再 pop(),这和某些语言不同,是新手常错点。另一个坑:对空栈调用 top() 或 pop() 是未定义行为,用前先 if(!s.empty())。栈顶永远是最后入栈的那个元素。
小纸条
s.push(3); s.push(7); 之后,s.top() 是几?
登录 后可看答案