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

来源:互联网 发布:知乎论坛网站彭加木 编辑:程序博客网 时间:2024/04/24 19:30

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

sin(20+10){[}]

示例输出

yesno

提示

 

来源

ma6174

示例程序

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){    char str1[60],str2[60];    int n,i;    int flag,c;    while(gets(str1)!=NULL)    {        memset(str2,0,sizeof(str2));        c=0;        flag=0;        n=strlen(str1);        for(i=0;i<n;i++)        {            if(str1[i]=='('||str1[i]=='['||str1[i]=='{')                str2[c++]=str1[i];            else if(str1[i]==')')            {                if(str2[c-1]==0)                {                    flag=1;                    break;                }                else                 {                    char str=str2[c-1];                    if(str=='(')                    {                        str2[c-1]=0;                        c--;                    }                    else                    {                        flag=1;                        break;                    }                }            }            else if(str1[i]==']')            {                if(str2[c-1]==0)                {                    flag=1;                    break;                }                else                {                    char str=str2[c-1];                    if(str=='[')                    {                        str2[c-1]=0;                        c--;                    }                    else                    {                        flag=1;                        break;                    }                }            }            else if(str1[i]=='}')            {                if(str2[c-1]==0)                {                    flag=1;                    break;                }                else                {                    char str=str2[c-1];                    if(str=='{')                        {                            str2[c-1]=0;                            c--;                        }                        else                        {                            flag=1;                            break;                        }                }            }            if(flag==1)                break;        }        if(flag==0&&str2[0]==0)            printf("yes\n");        else printf("no\n");    }    return 0;}


0 0
原创粉丝点击