- int main(){
- stack s;
- initial(s);
- /* 输入字符串, 并将字符串放到字符数组中,
- 实现能够逐个扫描字符串中的字符, 并且不跳过空格符
- */
- string str;
- getline(cin, str);
- char ch[200]={'\0'};
- strcpy(ch,str.c_str());
- //flag 标志状态 1 为括号匹配, 0 为不匹配
- int flag=1;
- int i;
- for(i=0; ch[i]!='\0'; i++){
- // 元素若为 {,(,[则入栈
- if((ch[i] == '{' )|| (ch[i] =='[') || (ch[i] =='(')){
- push(s, ch[i]);
- }// 元素若为},),] 则出栈 赋值给 a
- else if((ch[i] == '}') || (ch[i] ==']') || (ch[i] ==')')){
- char a;
- a = pop(s);
- // 若 a 与 ch[i] 匹配, 进行下一个字符扫描
- if((a == '{' && ch[i] == '}') || (a == '(' && ch[i] == ')') || (a == '[' && ch[i] == ']')){
- continue;
- }else flag = 0;
- }
- }
- if(s.top != 0){
- flag = 0;
- }
- if(flag == 0){
- cout<<"no";
- }else cout<<"yes";
- return 0;
- }
来源: https://www.cnblogs.com/yi2105/p/10604850.html