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

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

2016-08-02 18:36 183 查看

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


Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

sin(20+10){[}]


示例输出

yesno


提示

 

来源

ma6174

示例程序

 

[cpp] view
plain copy

#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=j-1;  

                }  

                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=j-1;  

                }  

                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=j-1;  

                }  

                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;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: