【括号匹配】

1.当遇到左括号时,将其入栈

2.当遇到右括号时,若栈非空,则与当前top匹配,再top出栈, 若栈空,则缺左括号

3.当串扫描完,若栈非空,则说明缺右括号,若栈空,则匹配成功

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define MAX 100
char stack[MAX];

int main(int argc, char *argv[])
{
    int N, top, flag;
    char ch;
    
    scanf("%d%*c", &N);
    while (N--)
    {
        top = 0, flag = 1;
        ch = getchar();
        while (ch != '\n')
        {
            if (ch == '(' || ch == '[') 
                stack[top++] = ch;
            else if (ch == ')' && stack[top - 1] == '(' || ch == ']' && stack[top - 1] == '[')
            {
                if (top) 
                    top--;
                else 
                    flag = 0;
            }
            else flag = 0;
            ch = getchar();
        }
        printf("%s\n", !top && flag ? "Yes" : "No");
    }
    return 0;
}

 

posted on 2014-03-28 16:47  至死丶不渝  阅读(262)  评论(0编辑  收藏  举报

导航