数据结构 括号匹配的检验 C++

2022-08-07 财经 50阅读
直接使用栈就可以了。左括号入栈,遇到右括号取栈顶元素,看是否同类匹配(都为【】或都为()),匹配则出栈,继续扫描后面的表达式,若不匹配则表达式非法。
我编写的代码如下:
#include
#include

using namespace std;
void main()
{
int i,invalid = 0;
char a[50];
char *s=a;
stack st;
st.empty();
cin>>a;
while(*s!='\0')
{
if(*s == '['|| *s == '(')
st.push(*s);
else
{
if(*s == ']')
{
if(st.top() != '[')
{
invalid = 1;
break;
}
else
st.pop();
}
if(*s == ')')
{
if(st.top()!='(')
{
invalid = 1;
break;
}
else
st.pop();
}
}
s++;
}
if(!st.empty())
invalid = 1;
if(invalid)
cout<<"invalid!"< else
cout<<"ok!"< cin>>i;

}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com