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

来源:互联网 发布:云豹直播源码 下载 编辑:程序博客网 时间:2024/06/06 10:06

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

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

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

Example Input

sin(20+10)
{[}]

Example Output

yes
no


#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    int i,j,n,l;    char s[150],p[150];    while(gets(s)!=NULL)    {        n=strlen(s);        j=0;                                              l=1;        for(i=0; i<n; i++)        {            if(s[i]=='{'||s[i]=='('||s[i]=='[')            {                p[j++]=s[i];            }            if(s[i]==')')            {                if(j==0)                {                    l=0;                    break;                }                if(j>0&&p[j-1]=='(')                             {                    j--;                }                else if(j>0&&p[j-1]!='(')                {                    l=0;                    break;                }            }            if(s[i]==']')            {                if(j==0)                {                    l=0;                    break;                }                if(j>0&&p[j-1]=='[')                {                    j--;                }                else if(j>0&&p[j-1]!='[')                {                    l=0;                    break;                }            }            if(s[i]=='}')            {                if(j==0)                {                    l=0;                    break;                }                if(j>0&&p[j-1]=='{')                {                    j--;                }                else if(j>0&&p[j-1]!='{')                {                    l=0;                    break;                }            }        }        if(l==0||j>0)            printf("no\n");        else if(j==0)            printf("yes\n");    }    return 0;}
0 0
原创粉丝点击