您的位置:首页 > 理论基础 > 数据结构算法

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

2013-01-23 14:03 381 查看

题目描述

给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入

输入数据有多组,处理到文件结束。

输出

如果匹配就输出“yes”,不匹配输出“no”

示例输入

sin(20+10)
{[}]


示例输出

yes
no


提示

View Code

#include<stdio.h>
#define maxsize 51
struct stack
{
char a[maxsize] ;
int top ;
}s ;
int match(char c1, char c2)
{
if((c1=='{'&&c2=='}')||(c1=='('&&c2==')')||(c1=='['&&c2==']'))
return 1 ;
else
return 0 ;
}
int m(char *str)
{
int i ;
char c ;
s.top = -1 ;
for(i=0; str[i]!=0; i++)
{
switch(str[i])
{
case'(':
case'[':
case'{': s.top++;
s.a[s.top] = str[i] ;
break ;
case')':
case']':
case'}': c = s.a[s.top] ;
if(match(c, str[i]))
s.top-- ;
else
return 0 ;

}
}
if(s.top==-1)
return 1;
else return 0 ;
}
int main()
{
int i ;
char str[51] ;
while(gets(str)!=NULL)
{
i = m(str) ;
if(i!=0)
printf("yes\n") ;
else printf("no\n") ;
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: