zoukankan      html  css  js  c++  java
  • 课内上机实验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来判断是否所有左括号都能被配对。

  • 相关阅读:
    VMware Ubuntu安装详细过程
    Ubuntu16.04下安装sublime text3
    Linux ubuntu下svn的命令使用指南
    Ubuntu 安装Phpstorm+汉化+激活
    ubuntu下安装php openssl扩展
    Unbuntu三行命令安装Google
    ①Python简史
    单向链表操作
    特殊文件(下)
    特殊文件(上)
  • 原文地址:https://www.cnblogs.com/liuhao-1997/p/4984500.html
Copyright © 2011-2022 走看看