文章目录
一、什么是stack
stack翻译为栈,是STL中实现的一个先进后出的容器,要使用stack,需要添加头文件#include <stack>
二、stack的操作
1.stack的定义
stack<typename> name;
其定义方法和其他的STL容器相同,typename
可以是任意基本数据结构或容器
2.stack容器内元素的访问
由于栈(stack)本身就是一种后进先出的数据结构,在STL中的stack只能通过top()
来访问栈顶元素
向栈中插入一个元素:s.push(x);
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
for (int i = 1; i <= 5; i ++ ) s.push(i);
cout << s.top();
return 0;
}
输出结果:5
3.stack中的函数
(1)push()
s.push(x);
把x入栈,时间复杂度为O(1),实例见stack容器内元素的访问
(2)top()
s.top();
获得栈顶元素,时间复杂度为O(1),实例见stack容器内元素的访问
(3)pop()
s.pop();
用来弹出栈顶元素,时间复杂度为O(1)
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
for (int i = 1; i <= 5; i ++ ) s.push(i);
for (int i = 1; i <= 3; i ++ ) s.pop();
//把 5 4 3 依次弹出
cout << s.top();
return 0;
}
输出结果为:2
(4)empty()
s.empty();
可以检测stack
内是否为空,返回true
为空,返回false
是非空,时间复杂度为O(1)
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
if(s.empty()) cout << "EMPTY" << endl;
else cout << "NOT EMPTY" << endl;
for (int i = 1; i <= 5; i ++ ) s.push(i);
if(s.empty()) cout << "EMPTY" << endl;
else cout << "NOT EMPTY" << endl;
return 0;
}
输出结果为:
EMPTY
NOT EMPYTY
(5)size()
s.size();
返回stack
内元素的个数,时间复杂度为O(1)
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
for (int i = 1; i <= 5; i ++ ) s.push(i);
cout << s.size();
return 0;
}
输出结果为:5