首页 > 编程 > C++ > 正文

c++STL的stack的应用之括号匹配

2019-11-06 07:28:28
字体:
来源:转载
供稿:网友

有个问题是要匹配资格字符串中的左右括号,如(a*(b+c)+d)在位置1和4有左括号,在位置8和11有右括号。可以观察到如果从右向左扫描,那么每个右括号都与最近遇到的那个未匹配的左括号相匹配。现在直接上代码

void Match(char* str){stack<int> s;int lengh = strlen(str);for(int i=0;i<lengh;i++){if(str[i]=='(')s.push(i);else if(str[i]==')'){if(!s.empty()){int nLeft = s.top();s.pop();cout<<"right and left is:"<<i<<" "<<nLeft<<endl;}}}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选