栈的应用一——括号匹配

栈的应用一——括号匹配

lixiangrong
2024-01-05 / 0 评论 / 4 阅读 / 正在检测是否收录...
// 括号匹配
int matchBracket(char c[])
{
    seqStack stack;
    init(&stack);
    int i = 0;
    while (c[i])
    {
        switch (c[i])
        {
            case '{':
            case '[':
            case '(': push(&stack,c[i]);break;
            case '}':
                if(!empty(stack) && read(stack) == '{')
                {
                    pop(&stack);
                    break;
                }
                else return 0;
            case ']':
                if(!empty(stack) && read(stack) == '[')
                {
                    pop(&stack);
                    break;
                }
                else return 0;
            case ')':
                if(!empty(stack) && read(stack) == '(')
                {
                    pop(&stack);
                    break;
                }
                else return 0;
        }
        i++;
    }
    return empty(stack); // 匹配结束后栈空则匹配成功,否则失败。
}

int main()
{
    char c[] = "{[()]}";
    if(matchBracket(c))
        printf("匹配成功!\n");
    else
        printf("匹配失败!\n");
    return 0;
}
0

评论 (0)

取消