栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。在STL中栈一共就5个常用操作函数(top()、push()、pop()、 size()、empty() ),很好记的。
#include <iostream>
#include <vector>
#include <stack>
#include <list>
using namespace std;
int main()
{
//定义栈 使用list作为容器
stack<int,list<int>> a;
stack<int,vector<int>> b;
int i;
//压入栈数据
for(i = 0;i < 10;i++)
{
a.push(i);
b.push(i);
}
//输出栈size的大小
cout<<"a stack size : " << a.size()<<endl;
//取栈项数据并将数据弹出栈
cout<<"a 中的数据:";
while(!a.empty())
{
cout<<a.top()<<" ";
//栈顶元素弹出栈
a.pop();
}
cout<<endl;
cout<<"b 中的数据:";
while(!b.empty())
{
cout<<b.top()<<" ";
//栈顶元素弹出栈
b.pop();
}
system("pause");
return 0;
}
栈的实践使用:逆波兰公式
表达式一般由操作数(Operand)、运算符(Operator)组成,例如算术表达式中,通常把运算符放在两个操作数的中间,
这称为中缀表达式(Infix Expression),如A+B。
波兰数学家Jan Lukasiewicz提出了