文章目录
一、什么是stack
二、stack的操作
1.stack的定义
2.stack容器内元素的访问
3.stack中的函数
(1)push()
(2)top()
(3)pop()
(4)empty()
(5)size()
一、什么是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