数据结构实验之栈四:括号匹配
Time Limit: 1000MS Memory limit: 65536K
题目描述
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入
输入数据有多组,处理到文件结束。
输出
如果匹配就输出“yes”,不匹配输出“no”
示例输入
sin(20+10)
{[}]
示例输出
yes
no
#include<stdio.h> #include<iostream> #include<string.h> #include<stack> using namespace std; int main() { char str[55]; int flag; while(gets(str)!=NULL) { stack<char>s; flag=0; for(int i=0;str[i]!='\0';i++) { if(str[i]=='['||str[i]=='{'||str[i]=='(') s.push(str[i]); else if(str[i]==')') { if(s.empty()) { flag=1; break; } else { if(s.top()=='(') s.pop(); else { flag=1; break; } } } else if(str[i]=='}') { if(s.empty()) { flag=1; break; } else { if(s.top()=='{') s.pop(); else { flag=1; break; } } } else if(str[i]==']') { if(s.empty()) { flag=1; break; } else { if(s.top()=='[') s.pop(); else { flag=1; break; } } } if(flag==1) break; } if(flag==0&&s.empty()) cout<<"yes"<<endl; else cout<<"no"<<endl; } }