• 课内上机实验3——括号匹配(栈)


    题目描述:输入字符串,判断里面的括号是否匹配。有(),[],{}

    #include <stdio.h>
    char a[1000];
    int top = 0;//top points at the first empty element
    void put_stack(char c)
    {
        a[top++] = c;
    }
    char pop_stack( )
    {
        char pop = a[top-1];
        top--;
        return pop;
    }
    int bracket_pair(char c)
    {
        switch (c) {
            case ')':
                if (pop_stack() == '(')
                    return 1;
                break;
            case ']':
                if (pop_stack() == '[')
                    return 1;
                break;
            case '}':
                if (pop_stack() == '{')
                    return 1;
                break;
        }
        return 0;
    }
    int main(int argc, const char * argv[])
    {
        int flag=1;
        char c;
        c = getchar();
        while (c != '
    ') {
            switch (c) {
                case '(':;
                case '[':;
                case '{':
                    put_stack(c);break;
                case ')':;
                case ']':;
                case '}':
                    flag = bracket_pair(c);
            }
            if (flag==0)
                break;
            
            c = getchar();
        }
        if (flag==1&&top==0) {
            printf("yes");
        }else{
            printf("no");
        }
        return 0;
    }

    为了保证括号真正匹配,一旦读入右括号,则与它最近的应该是同等大小的做括号,若是,则将其弹出栈,若不是,就可以立刻判断不匹配。

    最后判断指向栈顶的top是否为0来判断是否所有左括号都能被配对。

  • 相关阅读:
    Mockito 简明教程
    说说初用 Mock 工具测试碰到的坑
    java的mock测试框架
    使用模拟对象(Mock Object)技术进行测试驱动开发
    微信小程序
    微信小程序
    uniapp
    微信小程序
    微信小程序
    微信小程序
  • 原文地址:https://www.cnblogs.com/liuhao-1997/p/4984500.html
Copyright © 2020-2023  润新知