Stack(栈)是一种线性数据构造,它具有"先进后出“(Last In First Out,简称LIFO)的特点,即新元素进栈后只能位于栈顶,元素出栈时也只能从栈顶开端。
在C++中,stack通常是通过STL(Standard Template Library)库中的stack模板实现的。STL stack是基于deque(双端队列)实现的,通过deque模板我们可以实现stack的一些操作。
stack在数学中经常被用来处置数学表达式中的括号匹配问题。在这个问题中,我们需要使用stack来匹配左右括号,以确保所输入的算式结果是正确的
假设我们有一个算式"( a + b ) / ( c - d )",那么我们可以像下面的代码一样用stack来检查该算式中是否存在括号匹配问题
#include <iostream>
#include <stack>
using namespace std;
int main(){
stack<char>s;
string str = "( a + b ) / ( c - d )";
for(int i=0;i<str.length();i++){
if(str=='(') s.push(str);
else if(str==')') s.pop();
}