C 支架开启和关闭的存储地址

C 支架开启和关闭的存储地址,c,C,如果用户给我一个括号的任意组合字符串,比如,那么我想要一个程序来检查括号的打开和关闭,并以一种安排的方式分别存储每个括号的打开和关闭地址。如何操作?如果括号是一种类型,则不必仅通过增加或减少计数器来保存某些内容 例如下面的例子 #include <stdio.h> #include <stdbool.h> bool isBalanceBracket(const char *s){ int count = 0; for(int i = 0; s[i] ;

如果用户给我一个括号的任意组合字符串,比如,那么我想要一个程序来检查括号的打开和关闭,并以一种安排的方式分别存储每个括号的打开和关闭地址。如何操作?

如果括号是一种类型,则不必仅通过增加或减少计数器来保存某些内容

例如下面的例子

#include <stdio.h>
#include <stdbool.h>

bool isBalanceBracket(const char *s){
    int count = 0;
    for(int i = 0; s[i] ; ++i){
        if(s[i] == '(')
            ++count;
        else if(s[i] == ')')
            if(--count < 0)
                return false;
    }
    return count == 0;
}

int main(void){
    const char *test[] = {
        "(()())", ")()(", "()))"
    };
    for(int i = 0; i < sizeof(test)/sizeof(*test); ++i){
        if(isBalanceBracket(test[i]))
            printf("%s is OK\n", test[i]);
        else
            printf("%s is NG\n", test[i]);
    }
    return 0;
}

使用堆栈或递归调用跟踪嵌套,使用列表或类似的方法跟踪排序。只需倒计时、倒计时。请给我键入的代码,但如何存储括号开头和结尾的地址?例如,如果用户输入,则我希望每个括号的地址为1,6 2,3 4,5bracket@NavinChauhan为什么这是必要的?我认为最好实现一个堆栈。我想从最里面删除变量bracket@NavinChauhan我认为仅仅保存地址是没有用的。因为这对的位置并不代表支架的深度。最好创建语法树之类的东西。