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