一、栈的含义
栈是一个先进后出的数组。获取栈顶元素(top)弹出栈顶元素(pop)进栈(push)判断栈是否为空(empty)。
二、例题
给你一个数学表达式,保证中间没有空格,判断括号是否成对。遇到‘@’停止,表达式长度小于255。
输入样例
2*(x+y)/(x-y)@ 输出 YES
(25+x)*(a+(b+b+b)@ 输出NO
stack<char> s;//申请栈
char k;
while(cin>>k){
if(k=='@'){
break;
}
if(k=='('){
s.push('(');//入栈
}
else if(k==')'){
if(!s.empty()){//判断栈是否为空
if(s.top()=='('){//获取栈顶元素
s.pop();//出栈
}
else{
cout<<"NO";
return 0;
}
}
else{
cout<<"NO";
return 0;
}
}
}
if(!s.empty()){
cout<<"NO";
}
else{
cout<<"YES";
}