定义及特性
栈(stack)又名堆栈,它是限定在表的一端进行插入和删除操作的线性表(规则:先进后出)。这一端被称为栈顶,另一端称为栈底。不含元素的空表称为空栈。
特性:
- 栈不能遍历(不提供迭代器)
- 不支持随机存取
- 只能通过top从栈顶获取和删除元素
头文件
#include< iostream>
#include< stack >
using namespace std;
初始化
stack<int> s1; //创建一个空栈s1
stack<int> s2(s1); //用s1初始化s2
常用函数
①push() 入栈
s1.push(10);
s1.push(20);
s1.push(30);
s1.push(100); //表s1中有四个元素,从栈顶到栈底依次为100,30,20,10
②pop() 删除栈顶元素
s1.push(10);
s1.push(20);
s1.push(30);
s1.push(100);
s1.pop(); //此时s1中有三个元素,从栈顶到栈底依次为30,20,10
③top() 获得栈顶元素
s1.push(10);
s1.push(20);
s1.push(30);
cout << s1.top() <<endl; //输出30这个元素
④empty() 判断栈内是否为空
为空返回true,非空返回false
while(!s1.empty())
⑤size() 返回栈内元素个数
cout << s1.size() <<endl;
对以上操作进行实现:
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> s1; //s1为空栈
s1.push(10);
s1.push(20);
s1.push(30);
s1.push(100); //将10,20,30,100入栈,从栈顶到栈底依次是100,30,20,10
cout << "栈内元素个数:" << s1.size() << endl;
cout << "输出栈顶元素:" << s1.top() << endl ;
s1.pop(); //删除栈顶元素
cout << "输出栈内现在元素:" << endl;
while(!s1.empty()) //s1非空,此循环是将栈内元素全部输出
{
cout << s1.top() << " "; //输出栈顶元素
s1.pop(); //删除栈顶元素
}
return 0;
}
运行结果: