暑假集训 ——数据结构实验之栈与队列四:括号匹配

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

Problem Description

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

 

Input

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

 

Output

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

 

Sample Input

sin(20+10)
{[}]

Sample Output

yes
no

 

#include
#include

int main(void)
{
    char str[1000], stack[1000];
    int i, flag, top, len;

    while(gets(str) != NULL)
    {
        len = strlen(str);
        flag = 1;
        top = -1;

        for(i = 0; i < len; i++)
        {
            if(str[i] == '(' || str[i] == '{' || str[i] == '[')
            {
               stack[++top] = str[i];
            }

            else if(str[i] == ')')
            {
                if(top == -1 || stack[top] != '(')
                {
                    flag = 0;
                    break;
                }

                else
                {
                    top--;
                }
            }

            else if(str[i] == '}')
            {
                if(top == -1 || stack[top] != '{')
                {
                    flag = 0;
                    break;
                }

                else
                {
                    top--;
                }
            }


            else if(str[i] == ']')
            {
                if(top == -1 || stack[top] != '[')
                {
                    flag = 0;
                    break;
                }

                else
                {
                    top--;
                }
            }
        }

        if(top == -1 && flag == 1)
        {
            printf("yes\n");
        }

        else
        {
            printf("no\n");
        }
    }

    return 0;
}
 

你可能感兴趣的:(数据结构,数据结构——栈,暑假集训)