概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口。
生活中的栈:
弹夹也是先入后出。
坐地铁也是先进后出,后进先出。
栈中只有顶端top的元素才可以被外界使用,因此栈不允许有遍历行为。
栈中进入数据称为 --- 入栈 push
栈中弹出数据称为 --- 出栈 pop
进入和弹出的数据都是top位置的元素。只有top位置可以被访问,因此不支持遍历。
构造函数:
-
stack<T> stk;
//stack采用模板类实现, stack对象的默认构造形式 -
stack(const stack &stk);
//拷贝构造函数
赋值操作:
-
stack& operator=(const stack &stk);
//重载等号操作符
数据存取:
-
push(elem);
//向栈顶添加元素 -
pop();
//从栈顶移除第一个元素 -
top();
//返回栈顶元素
大小操作:
-
empty();
//判断堆栈是否为空 -
size();
//返回栈的大小
void test01()
{
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
s.push(50);
cout << "初始化栈的大小:" << s.size() << endl;
while (!s.empty())
{
// 可以把栈顶数据打印出来:
cout << "此时栈顶数据为:" << s.top() << endl;
s.pop();
};
cout << "弹出之后栈的大小:" << s.size() << endl;
}
输出:
初始化栈的大小:5
此时栈顶数据为:50
此时栈顶数据为:40
此时栈顶数据为:30
此时栈顶数据为:20
此时栈顶数据为:10
弹出之后栈的大小:0