数据结构实验之栈四:括号匹配

时间:2022-07-29 06:02:22

数据结构实验之栈四:括号匹配

Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic

Problem 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;
}