入栈出栈

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() 是几?

登录 后可看答案