数据结构实验之栈四:括号匹配
Time Limit: 1000MS Memory Limit: 65536KB Submit StatisticProblem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。Input
输入数据有多组,处理到文件结束。Output
如果匹配就输出“yes”,不匹配输出“no”Example Input
sin(20+10){[}]
Example Output
yesno
Author
ma6174
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef struct
{
char *c;
int top;
}Stack;
void initstack(Stack &S)
{
S.top=-1;
S.c=new char [10010];
}
int main()
{
ios::sync_with_stdio(false);
string x;
while(getline(cin, x))
{
int flag=1;
Stack S;
initstack(S);
int len=x.size();
for(int i=0;i<len;i++)
{
if(x[i]=='('||x[i]=='['||x[i]=='{')
{
S.c[++S.top]=x[i];
}
if(x[i]==')'||x[i]==']'||x[i]=='}')
{
char t=S.c[S.top];
if((t=='('&&x[i]==')')||(t=='{'&&x[i]=='}')||(t=='['&&x[i]==']'))
S.top--;
else
{
flag=0;
break;
}
}
}
if(S.top==-1&&flag)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}